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

Vue-计算属性

计算属性

案例

输入姓、名, 全名称=姓+名

在这里插入图片描述

实现

插值语法

  • 代码
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>计算属性与监视</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script></head><body><div id="root"><h1>计算属性与监视</h1><div>姓:<input type="text" v-model="firstName" /><br />名:<input type="text" v-model="lastName" /><br /><!-- 插值语法 -->全名称:<span>{{firstName}}{{lastName}}</span><br> </div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在启动是生成生产提示new Vue({el: "#root",data: {firstName: "刘",lastName: "德华",}});</script>
</html>
  • 效果

在这里插入图片描述

方法

  • 代码

{{ fullName() }}: 方法 必须携带括号

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>计算属性与监视</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script></head><body><div id="root"><h1>计算属性与监视</h1><div>姓:<input type="text" v-model="firstName" /><br />名:<input type="text" v-model="lastName" /><br /><!-- 插值语法 --><!-- 全名称:<span>{{firstName}}{{lastName}}</span><br> --><!-- 方法 : 必须携带括号 -->全名称:<span>{{ fullName() }}</span><br />全名称:<span>{{ fullName() }}</span><br /></div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在启动是生成生产提示new Vue({el: "#root",data: {firstName: "刘",lastName: "德华",},methods: {fullName() {console.log("调用fullname方法了")return this.firstName + this.lastName;},},});</script>
</html>
  • 效果

在这里插入图片描述

发现多次调用,fullName 方法也被调用了多次

计算属性

  • 代码
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>计算属性与监视</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script></head><body><div id="root"><h1>计算属性与监视</h1><div>姓:<input type="text" v-model="firstName" /><br />名:<input type="text" v-model="lastName" /><br /><!-- 插值语法 --><!-- 全名称:<span>{{firstName}}{{lastName}}</span><br> --><!-- 方法 : 必须携带括号 --><!-- 全名称:<span>{{ fullName() }}</span><br /> --><!-- 全名称:<span>{{ fullName() }}</span><br /> --><!-- 计算属性  -->全名称:<span>{{ computedFullName }}</span><br />全名称:<span>{{ computedFullName }}</span><br /></div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在启动是生成生产提示new Vue({el: "#root",data: {firstName: "刘",lastName: "德华",},computed: {computedFullName: {get() {console.log("调用computedFullName get 了");return this.firstName + "-" + this.lastName;},set(value) {console.log("调用computedFullName set 了");const names = value.split("-")this.firstName = names[0]this.lastName = names[1]},},// 简写 : 适用于只进行计算 不做修改的场景 // computedFullName() {//   console.log("调用computedFullName了");//   return this.firstName + this.lastName;// },},methods: {fullName() {console.log("调用fullname方法了");return this.firstName + this.lastName;},},});</script>
</html>
  • 效果

在这里插入图片描述

发现多次调用,computedFullName 只调用了一次

总结

属性计算有多种方式实现 插值方法计算属性

  • 插值: 适用于简单的拼接之类的。
  • 方法:适用于复杂的运算封装称方法供使用
    • 花括号中调用方法必须携带括号。如:{{fullName()}}
    • 多次调用,均会触发方法进行对应的逻辑执行
  • 计算属性:vue提供专用于属性计算的配置块
    • 本质是对象的get、set实现的,最终绑定到vm
    • 因此调用时只需要计算属性名称,不能携带括号
    • 多次调用,只会触发一次计算逻辑,缓存机制
    • 首次调用依赖项变更 会触发计算逻辑即缓存更新

相关文章:

  • 【QGIS二次开发】地图编辑-09
  • 1-机器学习的基本概念
  • 网络流算法
  • 进程与线程:10 信号量临界区保护
  • 【通用智能体】Serper API 详解:搜索引擎数据获取的核心工具
  • Redis 学习笔记 4:优惠券秒杀
  • GEE谷歌地球引擎批量下载逐日ERA5气象数据的方法
  • 《P4551 最长异或路径》
  • C语言之旅【6】--一维数组和二维数组
  • MyBatis(二)
  • AI Agent开发第70课-彻底消除RAG知识库幻觉(4)-解决知识库问答时语料“总重复”问题
  • 生成树的保护机制
  • 解决 Tailwind CSS 代码冗余问题
  • 功能安全管理
  • ES(ES2023/ES14)最新更新内容,及如何减少内耗
  • 《C++与OpenCV实战:图像增强大核心算法详解》​​
  • 设备预测性维护:从技术架构到工程实践,中讯烛龙如何实现停机时间锐减
  • 玄机-第二章日志分析-redis应急响应
  • Eigen与OpenCV矩阵操作全面对比:最大值、最小值、平均值
  • 时序数据库、实时数据库与实时数仓:如何为实时数据场景选择最佳解决方案?
  • 取得金奖西瓜品种独家使用权的上海金山,为何要到异地“试种”?
  • 罗马教皇利奥十四世正式任职
  • 因救心梗同学缺席职教高考的姜昭鹏顺利完成补考
  • 三方合作会否受政局变化影响?“中日韩+”智库合作论坛在沪举行
  • 俄乌谈判开始
  • 韶关一企业将消防安装工程肢解发包,广东住建厅:罚款逾五万