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)}
?我需要跟踪应用程序中的值更改,如