vue修改计算属性的值_「Vue学习记录五」计算属性和侦听器
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学习记录五」计算属性和侦听器相关推荐
- vue修改计算属性的值_八.Vue计算属性
Vue计算属性 前言 我们要做的是springboot和vue.js所做的前后端分离的hr项目,所以从来没接触到vue的小伙伴,可以这篇文章 学Vue入门,这一篇就够了 模板内的表达式非常便利,但是设 ...
- 用python计算pi的值_如何使用python中的series计算pi的值?
欢迎来到StackOverFlow.在 因此,您的代码有一些问题: 首先,您应该在代码的开头使用import math语句(除非您刚刚排除了它).这允许您使用math.sqrt()和math.pow( ...
- 修改dts后重编译_「正点原子FPGA连载」第二十章另一种方式编译ZYNQ镜像
1)摘自[正点原子]领航者 ZYNQ 之linux驱动开发指南 2)实验平台:正点原子领航者ZYNQ开发板 3)平台购买地址:https://item.taobao.com/item.htm?& ...
- Vue计算属性、方法、侦听器
文章目录 一.基础计算模板 二.计算属性computed 三.方法methods 四.侦听器watch 五.总结 六.源码地址 一.基础计算模板 <!DOCTYPE html> <h ...
- Vue2.(过滤器,Watch侦听器,计算属性,购物车案例)
目录 过滤器 1.定义过滤器 2.私有过滤器和全局过滤器 3.连续调用多个过滤器 4.过滤器传参 5.过滤器的注意点 watch 侦听器(监视数据的变化) 1.使用 watch 检测用户名是否可用 2 ...
- 04-Vue:计算属性、侦听器、脚手架
1.计算属性 一个变量的值,依赖另外一些数据计算而来的结果 注意:计算属性也是vue数据变量,所以不能和data里变量重名,用法和data相同的 语法: computed:{ "计算属性名& ...
- vue 侦听器侦听对象属性_Spring中的异步和事务性事件侦听器
vue 侦听器侦听对象属性 内置的事件发布功能从Spring的早期版本开始存在,并且对于处理同一应用程序上下文中Spring组件之间的基本通信仍然有用. 通常,应用程序可以生成应用程序事件(可以是任意 ...
- vue修改计算属性的值_Vue语法高级之计算属性和侦听器
计算属性和侦听器都可以监听到data区数据的变化,当数据变化时可以触发方法的调用,从而在方法内部可以进行相应的逻辑处理. 计算属性的语法格式是:computed: {} 侦听器的语法格式是:watch ...
- Vue.js 计算属性和侦听器
计算属性和侦听器 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example" ...
最新文章
- 禁用java rmi_java-如何安全关闭rmi客户端?
- jmeter定时器的使用_jmeter压测学习30定时器之固定定时器(sleep等待时间)
- 阿里云OSS linux使用备忘录
- 云开发是啥?看看它在编程导航项目的实践
- Xshell远程连接Linux服务器
- 面试—每日一题(1)
- 【深入理解JS核心技术】3. 调用、应用和绑定有什么区别
- java版的mrp模拟器,mrp模拟器
- LaTeX 页面大小和页边距
- 以后睡觉还是关上手机吧!
- 邮箱不能发送大附件,什么邮箱可以发送超大附件?
- VS Code PHP代码提示和格式化插件 IntelliSense安装使用
- uniapp开发微信小程序,多行文本换行,动态改变文字区域宽度
- matlab存取面shp
- Qt 局域网聊天(功能完善,界面美观,免费下载)
- NAND flash 和 NOR flash 区别
- PHP GD库文字生成图片及图片拼接
- 计算机微图表的类型,说说Excel中的微图表
- LRU 不知道?这个生活实例一定知道吧!
- 明翰中高级Java后端面试题攻略v0.3(持续更新)
热门文章
- JVM系列(一)--JVM运行时数据区
- Oracle SQL语句执行步骤
- Thrift介绍与应用(三)—hbase的thrift接口
- ajax参数中有加号,浅谈在js传递参数中含加号(+)的处理方式
- 自旋锁和互斥锁实例_多线程编程之自旋锁
- windows server 2008 r2 定时关机_电脑怎么定时关机 秒懂的Win10定时关机命令使用方法...
- cpu散热器怎么拆_电脑CPU处理器与整机温度高 教你简单解决
- [转载] java对象在内存中的结构
- [转载] mybatis
- 二进制 |_元二进制搜索| 单边二元搜索