el-table在使用v-if视图不更新的问题

在使用elementUI的表格时,会遇到使用v-if但是视图没有更新
比如

  <div class="tablePart" v-if="searchForm.taskArea=='省交通运输厅领域'">
    <el-table :data="tableData" stripe style="width: 100%" height="100%">
      <el-table-column prop="taskName" label="任务名称" align="center"></el-table-column>

      <el-table-column prop="checkRange" label="检查范围" align="center"></el-table-column>
      <el-table-column label="操作" align="center" width="200px">
        <template slot-scope="scope">
          <el-button @click="editMethod1(scope.row)" type="text">修改</el-button>
          <el-button @click="viewMethod(scope.row)" type="text">查看详情</el-button>
          <el-button type="text" @click="delMethod(scope.row.id)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
  <div class="tablePart" v-if="searchForm.taskArea=='省市场监管领域'">
    <el-table :data="tableData" stripe style="width: 100%" height="100%">
      <el-table-column prop="checkType" label="检查类型" align="center"></el-table-column>
      <el-table-column prop="itemType" label="事项类别" align="center"></el-table-column>
      <el-table-column prop="checkObject" label="检查对象" align="center"></el-table-column>
      <el-table-column label="任务周期" align="center">
        <template slot-scope="scope">
          {{scope.row.taskStartTime}}-{{scope.row.taskEndTime}}
        </template>
      </el-table-column>
      <el-table-column prop="checkRange" label="检查范围" align="center"></el-table-column>
      <el-table-column label="操作" align="center" width="200px">
        <template slot-scope="scope">
          <el-button @click="editMethod2(scope.row)" type="text">修改</el-button>
          <el-button @click="viewMethod2(scope.row)" type="text">查看详情</el-button>
          <el-button type="text" @click="delMethod(scope.row.id)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>

只需要在table中加入key值

<el-table :data="tableData"  key="table1" stripe style="width: 100%" height="100%">

就可以解决

在`el-dialog`(Element UI 的弹窗组件)中,如果嵌套了 `el-form` 和 `el-table` 并想实现在表单中输入数据后,通过滚动自动定位到对应的表格行并高亮显示,你需要做以下几个步骤: 1. 首先,在 `el-form` 中添加一个事件监听器,比如 `@keyup.enter.native` 或者 `@change`,当用户输入并提交或选择了一个值时,触发这个事件。 ```html <el-form :model="formData" @input="handleInput"> <!-- 表单内容 --> </el-form> ``` 2. 定义一个方法 `handleInput`,在这个方法里获取到用户输入的数据,并将其关联到表格的数据源上。例如,假设表格的数据是 `tableData`,你可以使用索引来查找对应项。 ```javascript methods: { handleInput(value) { const index = this.tableData.findIndex(item => item.key === value); // 假设 key 是表格的唯一标识字段 if (index !== -1) { this.$refs.table.setCurrentRow(index); // 如果需要高亮,可以在 table 上设置一个方法来操作选中样式 this.highlightRow(index); } }, } ``` 3. 创建或更新 `el-table` 组件,并绑定 `currentRow` 属性,以便在焦点变化时调整视图。 ```html <el-table ref="table" :data="tableData" :current-row.sync="currentRow"> <!-- 表格列 --> </el-table> ``` 4. 如果需要对某一行进行高亮处理,可以定义一个如下的 `highlightRow` 方法: ```javascript methods: { highlightRow(index) { this.$nextTick(() => { const rows = this.$refs.table.getRows(); rows[index].$el.classList.add('highlight'); // 假设 'highlight' 是自定义的CSS类名 }); }, }, ``` 这会在渲染完成后添加高亮样式。记得在 CSS 文件中为 `.highlight` 添加相应的样式。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值