问题描述,在vue的for循环中使用了指令,而后对数据进行筛选的时候,发现指令没有起做用。

如图前面的图标是根据文件名的后缀名,返回响应图标的,经过指令实现的。而后咱们在搜索框中删选之后,数据更新了,可是图标没有更新
分析缘由
<div v-for="(item, index) in myDate" :key='index'>
...
</div>
问题就出在了:key='index'由于vue中for循环是根据key的值的变化来更新vnode的,很显然咱们通过筛选若是删选出三条数据,那么index = 0, 1, 2没有变化,因此vnode没有更新
解决办法1:咱们设置:key的时候最好使用每条数据的id这样就是惟一的,每次筛选,vnode都会更新。
解决办法2:在指令中设置
// 添加bind设置
bind: function (el, binding, vnode) {
// bind中的vnode里面的key能够给设置一个随机数,这样每次都会更新虚拟节点。
let num = parseInt(Math.random() * 10)
vnode.key = num
},
inserted: ...