vue watch用法是什么


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<div>

      <p>obj.a: {{obj.a}}</p>

      <p>obj.a: <input type="text" v-model="obj.a"></p>

</div>

  

new Vue({

  el: '#root',

  data: {

    obj: {

      a: 123

    }

  },

  watch: {

    obj: {

      handler(newName, oldName) {

         console.log('obj.a changed');

      },

      immediate: true

    }

  }

})

我们在在输入框中输入数据视图改变obj.a的值时,我们发现是无效的。受现代 JavaScript 的限制 (以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删除。由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的。

默认情况下 handler 只监听obj这个属性它的引用的变化,我们只有给obj赋值的时候它才会监听到,比如我们在 mounted事件钩子函数中对obj进行重新赋值:

1

2

3

4

5

mounted: {

  this.obj = {

    a: '456'

  }

}

那么我们需要监听obj里的属性a的值呢?这时候deep属性就派上用场了:

1

2

3

4

5

6

7

8

9

watch: {

  obj: {

    handler(newName, oldName) {

      console.log('obj.a changed');

    },

    immediate: true,

    deep: true

  }

}

这样的方法对性能影响很大,修改obj里面任何一个属性都会触发这个监听器里的 handler。我们可以做如下处理:

1

2

3

4

5

6

7

8

9

watch: {

  'obj.a': {

    handler(newName, oldName) {

      console.log('obj.a changed');

    },

    immediate: true,

    // deep: true

  }

}

watch的注销这里就不在多说了,实际开发中,watch会随着组件一并销毁。

相关免费学习推荐:javascript(视频)

以上就是vue watch用法是什么的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

怎么安装vue-cli

vue如何实现局部刷新?(代码示例)

vue template是什么

vue能用bootstrap吗

了解一下vue中的插槽

vue和javascript的区别是什么

js proxy 的优势以及使用场景

详解6个不同级别的组件可重用性概念

vue2.0子组件中怎么改变父组件中的值 ?

vue和react本质的区别是什么

更多相关阅读请进入《vue》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...