1: 计算属性: (内置缓存机制)

当更改age的时候, fullName 函数不执行;

当更改fristName的时候, fullName 函数才执行

<div id = "app"><span>{{fullName}}</span> <span>{{age}}</span>
</div><script>var vm = new Vue({el : "#app",data: {fristName : "Christine",lastName : "Gao",age : "26"},// “计算属性” 实现:  具有缓存机制, 即改变年龄的时候, 执行 fullName 函数computed : {fullName : function () {console.log("计算了一次");return this.fristName + " " + this.lastName;}}})</script>

「效果如下:」

get和set用法

计算属性默认只有 getter,不过在需要时你也可以提供一个 setter:

<div id="app"><span>{{fullName}}</span><span>{{age}}</span>
</div><script>var vm = new Vue({el: "#app",data: {firstName: 'Foo',lastName: 'Bar',age:'26',},computed: {fullName:{get() {//回调函数 当需要读取当前属性值是执行,根据相关数据计算并返回当前属性的值console.log(this.firstName + ' ' + this.lastName)return this.firstName + ' ' + this.lastName},set(val) {//监视当前属性值的变化,当属性值发生变化时执行,更新相关的属性数据//val就是fullName的最新属性值console.log(val)const names = val.split(' ');console.log(names)this.firstName = names[0];this.lastName = names[1];}}}})

现在再运行 vm.fullName = 'John Doe' 时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。

「效果如下」

2、方法: (无内置缓存)

当更改age的时候, fullName 函数执行, 这样就增加了代码冗余,浏览器运行性能降低;

当更改fristName的时候, fullName 函数仍执行。

<div id = "app"><span>{{fullName()}}</span><span>{{age}}</span>
</div><script>var vm = new Vue({el : "#app",data: {fristName : "Christine",lastName : "Gao",age : "26"},// “方法” 实现 : 改变年龄的时候, 也会执行 fullName 函数methods : {fullName : function () {console.log("用方法,计算了一次")return  this.fristName + " " + this.lastName;}}})</script>

「效果如下:」

3、侦听器: (有内置缓存)

跟“计算属性”相似, 但是代码相较于“计算属性”而言, 比较繁琐且冗余。

  <div id = "app"><span>{{fullName}}</span><span>{{age}}</span>
</div>
<script>var vm = new Vue({el : "#app",data: {fristName : "Christine",lastName : "Gao",fullName : "Christine Gao",age : "26"},// “侦听” 实现 :实现了缓存, 但是代码冗余。watch : {firstName : function () {console.log("侦听实现 , 计算了一次");this.fullName = this.fristName + " " + this.lastName;},lastName : function () {console.log("侦听实现 , 计算了一次");this.fullName = this.fristName + " " + this.lastName;}}})</script>

「效果如下:」

监听 基础用法

放在 data 中的对象,一旦发生改变就会执行相应的操作,当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的

<div id="app"><p>FullName: {{fullName}}</p><p>FirstName: <input type="text" v-model="firstName"></p>
</div><script>var vm = new Vue({el: '#app',data: {firstName: 'Joy',lastName: 'lqy',fullName: ''},watch: {firstName(newName, oldName) {this.fullName = newName + ' ' + this.lastName;}}})
</script>

watch 中的对象在 data 中已经定义了,当我们输入firstName后, watch监听每次修改变化的新值,然后计算输出fullName。也就是上面的代码中,fullName 一开始被渲染出来的时候是空值,如下所示:

监听 高级用法

handler方法和immediate属性

如上所述,一开始被渲染出来的时候,fullName是空值,如果想要一开始就让最初绑定的值执行该怎么办尼?别急,我们只需要给firstName绑定一个handler方法,之前我们写的watch方法其实默认写的就是这个handler,Vue.js会去处理这个逻辑,最终编译出来其实就只这个handler,设置immediate:true代表如果在 wacth 里声明了 firstName 之后,就会立即先去执行里面的handler方法,如果为 false就跟我们以前的效果一样,不会在绑定的时候就执行

修改后的代码如下:

<div id="app"><p>FullName: {{fullName}}</p><p>FirstName: <input type="text" v-model="firstName"></p>
</div><script>var vm = new Vue({el: '#app',data: {firstName: 'Joy',lastName: 'lqy',fullName: ''},watch: {firstName: {handler(newName, oldName) {this.fullName = newName + ' ' + this.lastName;},// 代表在wacth里声明了firstName这个方法之后立即先去执行handler方法immediate: true}}})
</script>

deep属性

deep,默认值为false,代表是否深度监听,

总的来说,计算属性倾向于格式化/处理当前的数据,而 watch 倾向于执行数据变化需要进行的操作

参考资料

[1] https://segmentfault.com/a/1190000016593017

[2] https://www.jianshu.com/p/6f433b39fb8a

vue修改计算属性的值_「Vue学习记录五」计算属性和侦听器相关推荐

  1. vue修改计算属性的值_八.Vue计算属性

    Vue计算属性 前言 我们要做的是springboot和vue.js所做的前后端分离的hr项目,所以从来没接触到vue的小伙伴,可以这篇文章 学Vue入门,这一篇就够了 模板内的表达式非常便利,但是设 ...

  2. 用python计算pi的值_如何使用python中的series计算pi的值?

    欢迎来到StackOverFlow.在 因此,您的代码有一些问题: 首先,您应该在代码的开头使用import math语句(除非您刚刚排除了它).这允许您使用math.sqrt()和math.pow( ...

  3. 修改dts后重编译_「正点原子FPGA连载」第二十章另一种方式编译ZYNQ镜像

    1)摘自[正点原子]领航者 ZYNQ 之linux驱动开发指南 2)实验平台:正点原子领航者ZYNQ开发板 3)平台购买地址:https://item.taobao.com/item.htm?& ...

  4. Vue计算属性、方法、侦听器

    文章目录 一.基础计算模板 二.计算属性computed 三.方法methods 四.侦听器watch 五.总结 六.源码地址 一.基础计算模板 <!DOCTYPE html> <h ...

  5. Vue2.(过滤器,Watch侦听器,计算属性,购物车案例)

    目录 过滤器 1.定义过滤器 2.私有过滤器和全局过滤器 3.连续调用多个过滤器 4.过滤器传参 5.过滤器的注意点 watch 侦听器(监视数据的变化) 1.使用 watch 检测用户名是否可用 2 ...

  6. 04-Vue:计算属性、侦听器、脚手架

    1.计算属性 一个变量的值,依赖另外一些数据计算而来的结果 注意:计算属性也是vue数据变量,所以不能和data里变量重名,用法和data相同的 语法: computed:{ "计算属性名& ...

  7. vue 侦听器侦听对象属性_Spring中的异步和事务性事件侦听器

    vue 侦听器侦听对象属性 内置的事件发布功能从Spring的早期版本开始存在,并且对于处理同一应用程序上下文中Spring组件之间的基本通信仍然有用. 通常,应用程序可以生成应用程序事件(可以是任意 ...

  8. vue修改计算属性的值_Vue语法高级之计算属性和侦听器

    计算属性和侦听器都可以监听到data区数据的变化,当数据变化时可以触发方法的调用,从而在方法内部可以进行相应的逻辑处理. 计算属性的语法格式是:computed: {} 侦听器的语法格式是:watch ...

  9. Vue.js 计算属性和侦听器

    计算属性和侦听器 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example" ...

最新文章

  1. 禁用java rmi_java-如何安全关闭rmi客户端?
  2. jmeter定时器的使用_jmeter压测学习30定时器之固定定时器(sleep等待时间)
  3. 阿里云OSS linux使用备忘录
  4. 云开发是啥?看看它在编程导航项目的实践
  5. Xshell远程连接Linux服务器
  6. 面试—每日一题(1)
  7. 【深入理解JS核心技术】3. 调用、应用和绑定有什么区别
  8. java版的mrp模拟器,mrp模拟器
  9. LaTeX 页面大小和页边距
  10. 以后睡觉还是关上手机吧!
  11. 邮箱不能发送大附件,什么邮箱可以发送超大附件?
  12. VS Code PHP代码提示和格式化插件 IntelliSense安装使用
  13. uniapp开发微信小程序,多行文本换行,动态改变文字区域宽度
  14. matlab存取面shp
  15. Qt 局域网聊天(功能完善,界面美观,免费下载)
  16. NAND flash 和 NOR flash 区别
  17. PHP GD库文字生成图片及图片拼接
  18. 计算机微图表的类型,说说Excel中的微图表
  19. LRU 不知道?这个生活实例一定知道吧!
  20. 明翰中高级Java后端面试题攻略v0.3(持续更新)

热门文章

  1. JVM系列(一)--JVM运行时数据区
  2. Oracle SQL语句执行步骤
  3. Thrift介绍与应用(三)—hbase的thrift接口
  4. ajax参数中有加号,浅谈在js传递参数中含加号(+)的处理方式
  5. 自旋锁和互斥锁实例_多线程编程之自旋锁
  6. windows server 2008 r2 定时关机_电脑怎么定时关机 秒懂的Win10定时关机命令使用方法...
  7. cpu散热器怎么拆_电脑CPU处理器与整机温度高 教你简单解决
  8. [转载] java对象在内存中的结构
  9. [转载] mybatis
  10. 二进制 |_元二进制搜索| 单边二元搜索