vue watch

<div id="itany">
       <div>{{items}}</div>

    </div>

       
    <script>
      var vmvm = new Vue({
        el:"#itany",
        data:{
          count:0,
          items:[1,2,3,4,5]
        },
        watch:{
          "items":{
            handler(newValue,oldValue){
              console.log(newValue)
            },
            deep:true
          }
        }
      });
      console.log(vmvm.items[0]);
      vmvm.items[0] = 200;
    </script>

请问下,为什么console.log()为什么没有执行呢,而如果数组里面是对象的话就可以打印出来,

阅读 2k
3 个回答

vue数组的检测是个特殊的存在,当使用arr[index]=a或者arr.length=0的的时候,watch无法检测到,vue提供了一些解决方法,比如vue.$set;

由于 JavaScript 的限制,Vue 无法检测到以下数组变动:

当你使用索引直接设置一项时,例如 vm.items[indexOfItem] = newValue
当你修改数组长度时,例如 vm.items.length = newLength

详细了解请点击此处

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题