You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue问题:v-select文本变更后仅高亮对应行复选框而非全部

问题排查与修复

你当前代码的核心问题是使用了全局变量isShowAddBtn,只要任意一行的v-select发生变更,这个全局状态就会变为true,导致所有行的红色CheckIcon都显示出来;同时复选框的显示逻辑也没有和单行数据正确绑定,最终出现所有行复选框都标红的问题。

以下是具体的修复步骤:

1. 初始化行级独立状态

在mounted钩子中,给每个列表项添加专属的状态属性,替代全局变量:

mounted() {
  this.destrTestInfo.forEach(item => {
    item.previous_status_text = item.digital_status_text
    item.isCheckboxChecked = false
    // 新增行级的按钮显示控制属性
    item.showAddBtn = false
  })
},

2. 修改模板中的状态判断逻辑

将CheckIcon的显示条件从全局的this.isShowAddBtn改为当前行的item.showAddBtn,同时简化参数传递:

<tr v-for="(item, index) in this.destrTestInfo" :key="index">
  <td class="destr_tab">
    <input type="checkbox" :value="item.name" v-model="selectNameDestr" :id="item.id" v-if="item.isCheckboxChecked">
  </td>
  ...
  <td class="destr_tab">
    <div style="display: flex">
      <v-select
          style="width: 450px"
          @update:modelValue="showAddBtn(item)"
          v-model="item.digital_status_text"
          :options="this.dictionary"
          :reduce="text => text.id"
          label="text">
      </v-select>

      <CheckIcon
          v-if="item.showAddBtn"
          style="color: red"
          @click="addNewStatus(item)">
      </CheckIcon>
      ...
    </div>
  </td>
</tr>

3. 更新方法逻辑,绑定行级数据

修改showAddBtn和addNewStatus方法,直接操作当前行的item属性,避免全局状态污染:

showAddBtn(item){
  // 仅控制当前行的按钮显示状态
  item.showAddBtn = item.digital_status_text !== item.previous_status_text
},
async addNewStatus(item) {
  const urlStat = this.$store.state.supervisionURL + "/api/v1//destructive/result/" + item.id
  await axios.put(urlStat, {
    digital_status: item.digital_status_text
  })
  .then(response => {
    // 关闭当前行的按钮
    item.showAddBtn = false
    // 更新历史状态,避免重复触发
    item.previous_status_text = item.digital_status_text
    // 标记当前行的复选框为显示状态
    item.isCheckboxChecked = true
  }).catch(error => {
    // 可在此添加错误提示逻辑
  })
},

问题根源总结

  • 全局状态isShowAddBtn是共享变量,会导致所有行的按钮同步显示/隐藏
  • 原addNewStatus方法遍历整个数组查找item效率低下,直接传入item可直接操作
  • 未更新previous_status_text会导致后续操作重复触发按钮显示逻辑

内容的提问来源于stack exchange,提问作者MAKSIM S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:12:38