Vue.js 手表不显示变量变化
我有一个带有数据的数组Vue.js 手表不显示变量变化,vue.js,Vue.js,我有一个带有数据的数组rasters\u previews\u list methods: { removeit: function (index) { this.rasters_previews_list.splice(index, 1) } }, watch: { rasters_previews_list : function(oldval, newval) { console.l
rasters\u previews\u 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
。也许是同样的情况?还是另一个问题
实际工作代码:
以用户身份登录。选择带有多边形的欧洲,然后尝试使用X
按钮从面板中删除已创建的图像。Chrome控制台将显示2个相同的阵列
任务是在应用程序中更改跟踪值,如使用手表免责声明:我认为您正在使用.slice()
。所以,只要你使用拼接,这个答案是无效的。但我会把它保存在这里记录在案。答案还包含指向文档的链接
是,.splice()
更新阵列
否,vuejs
不跟踪此类数组突变:
根据:
js包装了观察到的数组的变异方法,因此它们也将
触发视图更新。包装方法包括:
- 推
- 流行音乐()
- 移位()
- 取消移位()
- 拼接()
- 排序()
- 反向
及
filter()
、concat()
和slice()
,它们不会改变原始数组,但总是返回一个新数组
因此,我们的想法是用一个新阵列替换您的阵列:
example1.items = example1.items.filter(function (item) {
return item.message.match(/Foo/)
})
你能创建一个JSFIDLE来说明这个问题吗?@gurghet我在在线项目中添加了链接。是的,但这个链接不会永远持续下去,这些问题将在未来几个月内阅读,最好发布持久的链接。@gurghet我试图将代码放到JSFeedle中,但我无法在那里工作。简短的问题是如何像我能做的那样跟踪应用程序中的值变化:removeit:function(index){this.rasters\u previews\u list.pop(index)}
?我需要跟踪应用程序中的值更改,如