主页 > 开源代码  > 

Vue监听属性(watch)

Vue监听属性(watch)

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 监听属性(watch)

目录

监听属性

监听值改变

使用watch实现

区别

总结


监听属性

通过watch来响应数据的变化。

虽然大多数情况计算属性都可以满足需要,但有时还是需要使用侦听器。当需要在数据发生变化时执行异步操作或者开销较大的操作时,就需要自定义监听器。

监听值改变

还是使用过滤应用的示例来做演示。

先绑定一个input事件。

示例如下:

<div id="box"> <input type="text" @input="handleInput" v-model="mytext"> <ul> <li v-for="item in datalist" :key="item"> {{item}} </li> </ul> </div>

同步情况下 使用计算属性可以完成

但是异步情况下,如果请求后端需要使用method方法。

示例如下:

<script> let vm = new Vue({ el:'#box', data: { mytext:'', datalist:['aa', 'bb', 'cc', 'dd', 'ee', 'de'], originList:['aa', 'bb', 'cc', 'dd', 'ee', 'de'], }, methods:{ handleInput() { console.log("input", this.mytext) // 模拟异步情况 使用2秒后响应 setTimeout(() => { this.datalist = this.originList.filter(item => item.includes(this.mytext)) }, 2000) } } }) </script>

使用watch实现

去掉input上的input事件,然后增加watch。

示例如下:

<script> let vm = new Vue({ el:'#box', data: { mytext:'', datalist:['aa', 'bb', 'cc', 'dd', 'ee', 'de'], originList:['aa', 'bb', 'cc', 'dd', 'ee', 'de'], }, watch: { mytext(newVal) { console.log("改变了", newVal) // 模拟异步情况 使用2秒后响应 setTimeout(() => { this.datalist = this.originList.filter(item => item.includes(this.mytext)) }, 2000) } } }) </script>

区别

1.data => 状态,被拦截

2.方法 ==》 事件绑定,逻辑计算。可以不用return,没有缓存

3.计算属性(重视结果)=》 解决模版过重问题,必须有return,只求结果,有缓存,同步。

4.watch(重视过程),监听一个值的改变。不用返回值,异步同步。

总结

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 监听属性(watch)

标签:

Vue监听属性(watch)由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Vue监听属性(watch)