TING沫 2023-07-18 17:18 采纳率: 70.6%
浏览 90
已结题

el-select清空缓存重新渲染

问题:

element select二级联动在设置联动时, 改变前一个select1的value值,后一个select2的会调接口查询返回值,select1改变后拿到了select2的所有选项,但是select2的选项没有更新,使用过 this.$forceUpdate() 没啥作用,请问有什么可以清空缓存重新渲染的解决办法

举例:

第一步:select1改变后,拿到的select2的所有选项数据是data1
第二步:select1又一次改变值,拿到的select2的所有选项数据是data2:
此时控制台打印select2的所有选项已经变更了是data2,但是页面上渲染是data1的选项数据

  • 写回答

1条回答 默认 最新

  • Leodong. 2023-07-18 17:24
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    你可以在select1的值发生变化时,手动重置select2的选项值。在Vue.js中,你可以使用v-model指令和watch来实现这一功能。

    首先,在select1上使用v-model指令来绑定一个数据属性,例如:

    <el-select v-model="selectedOption1" @change="handleSelect1Change">
      <!-- select1的选项 -->
    </el-select>
    

    然后在Vue实例中定义这个数据属性和对应的方法:

    data() {
      return {
        selectedOption1: null, // select1的选中值
        options2: [], // select2的选项
        selectedOption2: null // select2的选中值
      }
    },
    methods: {
      handleSelect1Change() {
        // 选中值发生变化时,重置select2的选项
        this.selectedOption2 = null;
        this.options2 = [];
      }
    }
    

    这里,当select1的选中值发生变化时,我们手动将select2的选中值和选项数组重置为空。这样可以确保select2的选项在下次渲染时能够正确更新。

    如果你仍然遇到问题,可以尝试使用Vue提供的key属性,将select2的key绑定到选中的select1上,这样当select1的值发生变化时,select2就会被强制重新渲染。例如:

    <el-select v-model="selectedOption2" :key="selectedOption1">
      <!-- select2的选项 -->
    </el-select>
    

    这里将select2的key绑定到了selectedOption1上,这样当selectedOption1发生变化时,select2就会重新渲染。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月18日
  • 创建了问题 7月18日