【项目实践-03】实验室PC

透传属性

透传属性指组件在使用的时候,作用在组件上的属性,会被向下流动,绑定到组件内的标签中。

可以透传的属性:style,class,id,属性,事件

当一个组件有多个根标签节点时,那么这个组件就不会有自动透传绑定属性行为

所以如果想利用组件的透传,就必须保证组件内部只有一个根标签

问题:在实验室项目pc端中想利用 v-hasPermi 为导入按钮增加权限,但发现加了权限之后并未生效,导入组件(SyImport) 代码如下:

html 复制代码
    <el-button type="primary" @click="handleUpload">
      {{ props.label }}
    </el-button>
    <el-dialog
      v-model="uploadDialogVisible"
      title="导入"
      width="40%"
      align-center
      :close-on-click-modal="false"
      :before-close="uploadDialogClose"
    >
      <div class="content-wrap">
        <div class="main-wrap">
          <div class="msg-wrap">
            <div v-if="props.explain" class="explain-wrap">
              导入说明:
              <div class="explain-text">
                {{ props.explain }}
              </div>
            </div>
            <div v-if="props.template.url" class="download-wrap" @click="getExcelTemplate">
              点击下载导入模板
            </div>
          </div>
          <div class="upload-wrap" :class="{ 'drag-wrap': !props.drag }">
            <el-upload
              ref="uploadRef"
              :accept="props.accept"
              :drag="props.drag"
              :http-request="requestUpload"
              :auto-upload="false"
              :multiple="props.multiple"
              :limit="props.limit"
              :on-exceed="handleExceed"
            >
              <el-icon class="el-icon--upload">
                <UploadFilled />
              </el-icon>
              <div class="el-upload__text">
                <span v-if="props.drag">拖拽文件到此 或者 </span><em>点击此处上传</em>
              </div>
              <template #tip>
                <div class="el-upload__tip">
                  请选择导入文件
                </div>
              </template>
            </el-upload>
          </div>
        </div>
        <div class="footer-wrap">
          <el-button type="primary" :loading="submitLoading" @click="submitUpload">
            确认导入
          </el-button>
        </div>
      </div>
    </el-dialog>

由此可看出:组件内部有多个根标签,Vue 不知道为哪个标签绑定透传属性,所以v-hasPermi不会生效。

修改:在组件内部添加一个根标签,将这两个标签都放在根标签里,由此问题解决。

相关推荐
To_OC5 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
To_OC6 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
小林ixn6 小时前
从 ??= 到 onKeyDown:一个 React 组件的“自我修养”
前端·javascript·react.js
এ慕ོ冬℘゜7 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
随心点儿8 小时前
js postMessage 实现跨域发送消息-应用示例
javascript·ecmascript·postmessage
kyriewen9 小时前
我让AI改一个bug——它偷偷动了5个我没让它碰的地方
前端·javascript·ai编程
慧一居士11 小时前
Element Plus 按需引入的配置使用说明和完整示例
前端·vue.js
gis开发之家14 小时前
《Vue3 从入门到大神35篇》Vue3 源码详解(五):effect 依赖收集原理——track 与 trigger 是如何工作的?
javascript·typescript·前端框架·vue3·vue3源码
橘子星15 小时前
我一个前端切图仔,凭什么能在浏览器里跑大模型?
前端·javascript·前端框架
半个落月15 小时前
用 LangChain JS 做可控写作实验:理解温度参数、提示词与异步调用
javascript·人工智能·后端