我有数据rasters_previews_list
数组。
methods:
{
removeit: function (index)
{
this.rasters_previews_list.splice(index, 1)
}
},
watch:
{
rasters_previews_list : function(oldval, newval)
{
console.log("Value changed");
console.log("oldval: ", oldval);
console.log("newval: ", newval);
}
}
输出:
oldval: Object1: Object2: Object3
newval: Object1: Object2: Object3
新旧相同!但元素被删除了!
splice
是否将数组大小更新为Vue-delete
?
每次我在控制台中获得的问题均为oldval
和newval
。我知道js有一些限制,例如它不可能跟踪数组的变化。而Vue使用方法set
。也许它的情况相同?或者它是另一个问题?
真正的工作代码:http://5.200.52.99:8080/
以用户身份登录。选择带有多边形的Europe,然后尝试使用X
按钮从面板中删除已创建的图像。 Chrome控制台将显示2个相同的阵列。
该任务在应用中跟踪价值变化,例如http://vuejs.org/guide/#All-Together-Now和watch
答案 0 :(得分:1)
免责声明:我认为您使用的是.slice()
。所以只要你使用拼接这个答案是无效的。但我会把它留在这里记录下来。答案也包含文档链接。
是的,.splice()
更新数组。
不,vuejs
不跟踪此类阵列突变:
Vue.js包装了一个观察到的Array的变异方法,所以他们也会这样做 触发查看更新。包装的方法是:
- push()
- pop()
- shift()
- unshift()
- splice()
- sort()
- 反向()
和
filter()
,concat()
和slice()
,它们不会改变原始数组但始终返回新数组
所以我的想法是用新的数组替换你的数组:
example1.items = example1.items.filter(function (item) {
return item.message.match(/Foo/)
})