博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算属性和观察者
阅读量:6084 次
发布时间:2019-06-20

本文共 1908 字,大约阅读时间需要 6 分钟。

hot3.png

计算属性和观察者

watch 和 computed都可以用于监视数据的变动

观察者 watch

同angular一样,watch监视分为普通数据监视,和对象的属性监视,如果需要动态的监视对象的属性,我们需要采用深度监视模式,写法参考下面实例:

  
Document

计算属性 computed

computed相对于watch有哪些优点:

  • 有缓存,只有在第一次使用的时候,方法会被调用。 方法调用后,结果就被缓存起来,下次使用的时候,直接从缓存中取数据

  • 当 计算属性依赖的属性(lastName / firstName)发生变化以后,计算属性函数就会被重新调用执行(1次)

简单写法:

...var vm = new Vue({ el: '#app', data: { firstName: '赵四', lastName: '尼古拉斯' }, computed: { fullName: function() { console.log('计算属性 fullName 执行了'); //结果只执行一次,其他从缓存中读取,不会打印 return this.lastName + ' ' + this.firstName } } })

getter 和 setter设置

...var vm = new Vue({ el: '#app', data: { firstName: '赵四', lastName: '尼古拉斯' }, computed: { // 这种方式是下面 get 方法的简化形式: // fullName: function() { // console.log('计算属性 fullName 执行了'); // return this.lastName + ' ' + this.firstName // } fullName: { // get方法会在读取 fullName 计算属性值的时候,被调用 get: function() { console.log('读取计算属性的值'); return this.lastName + ' ' + this.firstName }, // set方法会在 修改 fullName 计算属性值的时候,被调用 // 如何修改fullName的值??? 修改对应文本框中的值即可 set: function(val) { // console.log('设置计算属性的值'); this.lastName = val.split(' ')[0] this.firstName = val.split(' ')[1] } } }

关闭缓存,每次都执行getter方法,重新获取

computed: {        // 这种方式是下面 get 方法的简化形式:        example: function() {            // 关闭缓存,默认为true;            cache:false,            get:function(){                // 虽然data中数据没变,但是我们需要更新时间戳,所以需要去除缓存                return Date.now() + this.welcome;            }        }

转载于:https://my.oschina.net/shuaihong/blog/1550519

你可能感兴趣的文章
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>
一步一步学习SignalR进行实时通信_7_非代理
查看>>
AOL重组为两大业务部门 全球裁员500人
查看>>