手表不显示变量

时间:2016-08-10 12:58:47

标签: vue.js

我有数据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

每次我在控制台中获得的问题均为oldvalnewval。我知道js有一些限制,例如它不可能跟踪数组的变化。而Vue使用方法set。也许它的情况相同?或者它是另一个问题?

真正的工作代码:http://5.200.52.99:8080/ 以用户身份登录。选择带有多边形的Europe,然后尝试使用X按钮从面板中删除已创建的图像。 Chrome控制台将显示2个相同的阵列。

该任务在应用中跟踪价值变化,例如http://vuejs.org/guide/#All-Together-Nowwatch

1 个答案:

答案 0 :(得分:1)

免责声明:我认为您使用的是.slice()。所以只要你使用拼接这个答案是无效的。但我会把它留在这里记录下来。答案也包含文档链接。

是的,.splice()更新数组。

不,vuejs不跟踪此类阵列突变:

根据documentation

  

Vue.js包装了一个观察到的Array的变异方法,所以他们也会这样做   触发查看更新。包装的方法是:

     
      
  • push()
  •   
  • pop()
  •   
  • shift()
  •   
  • unshift()
  •   
  • splice()
  •   
  • sort()
  •   
  • 反向()
  •   

  

filter()concat()slice(),它们不会改变原始数组但始终返回新数组

所以我的想法是用新的数组替换你的数组:

example1.items = example1.items.filter(function (item) {
  return item.message.match(/Foo/)
})