当前位置: 首页 > news >正文

Vue——认识day04_计算属性(案例:实时预览)

目录

1.计算属性之姓名案例之插值语法的实现

2.计算属性之姓名案例之methods语法的实现

3.计算属性之姓名案例之计算属性语法的实现

4.计算属性的简写方式



1.计算属性之姓名案例之插值语法的实现

代码示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>姓名案例_插值语法实现</title><script type="text/javascript" src="../js/vue.js"></script>
</head>
</head>
<body><div id="root">姓:<input type="text" v-model="firstName"><br><br>名:<input type="text" v-model="lastName"><br><br><!-- slice(0,3):表示显示三位 --><!-- 全名:<span>{{firstName.slice(0,3)}}-{{lastName}}</span> -->全名:<span>{{firstName.slice(0,3)}}-{{lastName}}</span></div></div></body><script type="text/javascript">Vue.config.productionTip=falsenew Vue({el:'#root',data:{firstName:'W',lastName:'J'}});
</script>
</html>

2.计算属性之姓名案例之methods语法的实现

代码示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>姓名案例_methods实现</title><script type="text/javascript" src="../js/vue.js"></script>
</head>
</head>
<body><div id="root">姓:<input type="text" v-model="firstName"><br><br>名:<input type="text" v-model="lastName"><!-- slice(0,3):表示显示三位 --><br><br>全名:<span>{{getFullName()}}</span><br><br><!-- <button @click="getFullName(firstName,lastName)">点击获取全名</button> --></div></div></body><script type="text/javascript">Vue.config.productionTip=falsenew Vue({el:'#root',data:{firstName:'W',lastName:'J'},methods: {getFullName(firstName,lastName){// alert(firstName + '-' + lastName)return this.firstName + '-' + this.lastName}},});
</script>
</html>

3.计算属性之姓名案例之计算属性语法的实现

        计算属性是Vue中的一种特殊属性,它不存在于数据对象中,而是通过已有属性进行计算得到的。计算属性的实现原理是借助了Object.defineProperty方法提供的getter和setter函数。当初次读取计算属性时,会执行一次getter函数;当依赖的数据发生改变时,会再次调用getter函数。相比于使用methods中的函数来实现相同的计算逻辑,计算属性具有缓存机制,因此效率更高。另外,调试计算属性也更加方便。

        需要注意的是,计算属性最终会出现在Vue实例的vm对象上,可以直接读取和使用。如果需要修改计算属性的值,必须在计算属性的set函数中进行响应式的更新,并确保更新的同时引起计算属性所依赖的数据发生变化。

示例代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>姓名案例_计算属性实现</title><script type="text/javascript" src="../js/vue.js"></script>
</head>
</head>
<body><div id="root">姓:<input type="text" v-model="firstName"><br><br>名:<input type="text" v-model="lastName"><br><br>全名:<span>{{fullName}}</span><br><br><!-- 由于计算属性这里有缓存所以之后的都没有调用get 但是对于method一直都会调用 -->全名:<span>{{fullName}}</span><br><br>全名:<span>{{fullName}}</span><br><br></div></div></body><script type="text/javascript">Vue.config.productionTip=falseconst vm = new Vue({el:'#root',data:{firstName:'W',lastName:'J'},// 计算属性computed:{fullName:{// get的作用:当有人读取fullName时get就会被调用// 返回值就是fullName 的值// get的调用时机:// 1.初次读取fullName时// 2.所依赖的数据发生变化时(防止脏读)get(){return this.firstName + '-' + this.lastName},// set的调用时机:当fullName被修改时set(value){console.log('set:' + value)const arr = value.split('-')this.firstName = arr[0]this.lastName = arr[1]}}}});
</script>
</html>

4.计算属性的简写方式

代码示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>姓名案例_计算属性实现</title><script type="text/javascript" src="../js/vue.js"></script>
</head>
</head>
<body><div id="root">姓:<input type="text" v-model="firstName"><br><br>名:<input type="text" v-model="lastName"><br><br>全名:<span>{{fullName}}</span></div></div></body><script type="text/javascript">Vue.config.productionTip=falseconst vm = new Vue({el:'#root',data:{firstName:'W',lastName:'J'},// 计算属性// 在确定只读不改之后可以采用简写的形式computed:{// 完整写法
/*             fullName:{get(){console.log('get被调用了')return this.firstName + '-' + this.lastName},set(value){console.log('set:' + value)const arr = value.split('-')this.firstName = arr[0]this.lastName = arr[1]}} *///简写// 这里的function就相当于get()// fullName:function(){fullName(){console.log('get被调用了')return this.firstName + '-' + this.lastName}}});
</script>
</html>


这文章真水!!!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 望繁信科技亮相2024数博会:以流程智能引领数字化转型新未来
  • KTH5701 系列低功耗、高精度 3D 霍尔传感器
  • 【蓝牙协议栈】【BLE】【GATT】精讲GATT Profile架构(图文并茂精华版)
  • Cesium 和 three.js 对数深度缓冲原理简析
  • 【58同城-注册安全分析报告】
  • 计算机网络 TCPUDP、IP、ARPRARP、NAT总结
  • 源代码加密软件有哪些?11款超好用的源代码加密软件推荐
  • chapter08-面向对象编程——(Object类详解)——day09
  • ubuntu c++ http服务端event使用
  • AI学习记录 - 模型训练中怎么反向传播以及学习率的影响
  • 《黑神话悟空》幽魂无脑攻略分享
  • Axure设计之Web端交互元件库
  • 设计模式之工厂模式和策略模式的区别
  • 深入垃圾回收:理解GC的核心算法与实现
  • 移位操作存储多个布尔值或标志位
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【刷算法】求1+2+3+...+n
  • AWS实战 - 利用IAM对S3做访问控制
  • golang中接口赋值与方法集
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • PHP 小技巧
  • python大佬养成计划----difflib模块
  • Redis 懒删除(lazy free)简史
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • springMvc学习笔记(2)
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue--为什么data属性必须是一个函数
  • 编写高质量JavaScript代码之并发
  • 汉诺塔算法
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 经典排序算法及其 Java 实现
  • 利用jquery编写加法运算验证码
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 普通函数和构造函数的区别
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 线性表及其算法(java实现)
  • 项目管理碎碎念系列之一:干系人管理
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 鱼骨图 - 如何绘制?
  • 转载:[译] 内容加速黑科技趣谈
  • Nginx实现动静分离
  • # 计算机视觉入门
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (02)Unity使用在线AI大模型(调用Python)
  • (152)时序收敛--->(02)时序收敛二
  • (20)docke容器
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (vue)页面文件上传获取:action地址
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (三)Honghu Cloud云架构一定时调度平台
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级