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中的全局组件和局部组件

vuex有什么用?

vue中elementui是什么

angular与angularjs、react和vue的简单对比

一文带你看看vue router4中的酷炫功能

vue-cli+express获取mongodb数据的方法介绍

详解vue.js三种安装方式

vue和react中dom的区别

vue.js支持ie9吗

vue中mounted和created的区别(图文详解)

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




打赏

取消

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

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

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

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

评论

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