3.el-table-column v-if条件渲染

当el-table的某些列动态变化(v-if)的时候,经常会遇到el-table-column条件渲染出现报错的情况
报错内容:

h.$scopedSlots.default is not a function

究其原因, 这是因为在v-for或者v-if切换标签时,多个相同的标签被渲染,如果不添加key来区分则会出现复用的情况。而原本这些标签每一个都是独立的,于是需要添加key来做区分!
表格是element-ui通过循环产生的,而vue在dom重新渲染时有一个性能优化机制,就是相同dom会被复用,这就是问题所在,所以,通过key去标识一下当前行是唯一的,不许复用,就行了。
代码示例如下:

添加 :key="Math.random()"

使用:

<el-table @sort-change="changesort4" ref="tableData4" border :data="tableData4">
  <el-table-column fixed align="center" type=index label="序号" width="40" :key="Math.random()"/>
  <el-table-column align="center" prop="regionname" width="110" :show-overflow-tooltip="true" label="运营中心" :key="Math.random()"/>
  <el-table-column align="center" prop="agentname" width="110" :show-overflow-tooltip="true" label="服务商" :key="Math.random()"/>
  <el-table-column align="center" prop="businessname" width="110" :show-overflow-tooltip="true" label="商家" :key="Math.random()"/>
  <el-table-column align="center" prop="storename" width="110" :show-overflow-tooltip="true" label="门店" v-if="subjectForm4.groupBy===1" :key="Math.random()"/>
  <el-table-column align="center" prop="billfee" label="订单金额" sortable="custom" width="110" :key="Math.random()"/>
  <!--<el-table-column align="center" prop="customername" label="会员" width="75" />-->
  <el-table-column label="配送费">
    <el-table-column align="center" prop="customerDeliverFee" label="顾客支付" sortable="custom" width="110" :key="Math.random()"/>
    <el-table-column align="center" prop="busBearFee" label="商家承担" sortable="custom" width="110" :key="Math.random()"/>
    <el-table-column align="center" prop="subsidyfee" label="骑手小费" sortable="custom" width="110" :key="Math.random()"/>
    <el-table-column align="center" prop="sumFee" label="合计扣除" sortable="custom" width="110" :key="Math.random()"/>
  </el-table-column>
  <el-table-column align="center" prop="serviceFee" label="外卖抽成" sortable="custom" width="110" :key="Math.random()"/>
  <el-table-column align="center" prop="calfee" label="合计" sortable="custom" width="110" :key="Math.random()"/>
  <el-table-column align="center" prop="balance" label="服务费余额" sortable="custom" width="110" :key="Math.random()"/>
  <el-table-column fixed='right' align="center" label="操作" v-if="subjectForm4.groupBy===2" :key="Math.random()">
    <template slot-scope="scope">
      <el-button @click="goListByStore(scope.row)" type="text" size="small">查看</el-button>
    </template>
  </el-table-column>
</el-table>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,079评论 0 29
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,736评论 1 45
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,244评论 0 6
  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 2,112评论 0 2
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 7,275评论 0 25