Javascript 当我移除或拼接阵列上的一个元素时,有没有办法停止触发deep watch?
我在Vue.js 2.0中遇到了一个问题。我注意到当我从数组中删除一个元素时。组件上的深度监视将被触发,并将重置移除元素索引后每个组件的值 我有一个过滤器模态组件。此过滤器模态组件具有不同类型过滤器的选项。它有一个删除按钮,将触发deleteFilter(索引) 此.filters是一个数组变量,用于保存选定的筛选器 我在filter模式中有一个组件,它是filter selected 在“过滤器模式”中,选择了一个过滤器,并且该过滤器的“v”为Javascript 当我移除或拼接阵列上的一个元素时,有没有办法停止触发deep watch?,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我在Vue.js 2.0中遇到了一个问题。我注意到当我从数组中删除一个元素时。组件上的深度监视将被触发,并将重置移除元素索引后每个组件的值 我有一个过滤器模态组件。此过滤器模态组件具有不同类型过滤器的选项。它有一个删除按钮,将触发deleteFilter(索引) 此.filters是一个数组变量,用于保存选定的筛选器 我在filter模式中有一个组件,它是filter selected 在“过滤器模式”中,选择了一个过滤器,并且该过滤器的“v”为 <filterselected>
<filterselected>
v-for='selectedFilter, index) in filters'
:index='index'
</filterselected>
我注意到,当我从数组中删除一个元素时,深度监视事件(日期)将被触发,并将获得一个空/未识别的值,该值将被设置为this.inputValue
然后,一旦将该值设置为this.inputValue,也会有一个监视事件,并将在之后触发,该监视将向父组件发出该值在这里编写一个运行示例,您是否可以尝试重现此行为?或者,如果你不能,你能多分享一点你的代码,让我们更好地理解吗?嗨@Bernardoduart我编辑了我的文章。你可以在那里查看更多信息。谢谢,看起来这只是循环键的问题。如果在
上放置合适的键
属性,则在移除一个组件时,应停止所有组件的移动。您需要仔细选择键
,尽管使用索引
没有帮助,但它必须是唯一标识过滤器的东西。
<filterselected>
v-for='selectedFilter, index) in filters'
:index='index'
</filterselected>
Watch: {
date: {
handler(val){
this.inputValue = val;
},
deep: true
},
inputValue: function(){
this.$emit('changeinput', { value: this.inputValue }
}
}