模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如:

{{ message.split('').reverse().join('') }}

在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量 message 的翻转字符串。当你想要在模板中多次引用此处的翻转字符串时,就会更加难以处理。 所以,对于任何复杂逻辑,你都应当使用计算属性

1. 基础例子

Original message: "{{ message }}"

Computed reversed message: "{{ reversedMessage }}"

var vm = new Vue({ el: '#example', data: { message: 'Hello' }, computed: { // 计算属性的 getter reversedMessage: function () { // `this` 指向 vm 实例 return this.message.split('').reverse().join('') } }})

结果: Original message: "Hello" Computed reversed message: "olleH" 这里我们声明了一个计算属性 reversedMessage。我们提供的函数将用作属性 vm.reversedMessage 的 getter 函数。

2.计算属性缓存

计算属性是缓存的,只要相关依赖没有改变,多次访问计算属性得到的值是之前缓存的计算结果,不会多次执行。

这也同样意味着下面的计算属性将不再更新,因为 Date.now() 不是响应式依赖:

computed: { now: function () { return Date.now() }}

相比之下,每当触发重新渲染时,调用方法将总会再次执行函数。 我们为什么需要缓存?假设我们有一个性能开销比较大的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter!如果你不希望有缓存,请用方法来替代。

3. 计算属性的 setter

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

// ...computed: { fullName: { // getter get: function () { return this.firstName + ' ' + this.lastName }, // setter set: function (newValue) { var names = newValue.split(' ') this.firstName = names[0] this.lastName = names[names.length - 1] } }}// ...

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

4. 示例

{{msg}}
{{msg2}}

点击改变普通属性值,计算属性也会相应改变

vue 计算属性和data_Vue.js教程(五)--Vue的计算属性相关推荐

  1. vue 父传子_Vue.js教程Vue基本指令

    前言 本文仅介绍基本常用指令(不包括自定义指令和相应的修饰符,这两个以后再写). 再附上官方API文档,大家也可以去看官方解释,更全面更具体.VueAPI 本文所有指令写在views文件夹下的Home ...

  2. vue页面滚动动画——wow.js教程

    WOW.js 是一款帮助你实现滚动页面时触发CSS 动画效果的插件. 缺陷:当页面向下滚动时,动画出现:当页面向上回滚时,动画不会回退.(即动画仅出现一次!) 官网地址  https://www.de ...

  3. MATLAB数学计算与工程分析范例教程,MATLAB 2016数学计算与工程分析从入门到精通...

    全书通过近400个实例讲解了利用MATLAB 2016进行数学计算和工程分析的方法和技巧,涵盖了MATLAB的五大功能:1)数值计算功能:2)符号计算功能:3)图形与数据可视化功能:4)可视化建模与仿 ...

  4. Html的a标签onclick属性,关于通过js给a标签增加onclick属性

    var selfw2 = this; //selfw2.loadData(nm); return selfw2.loadData(nm).then(function(){ var cardInstan ...

  5. vue教程2-03 vue计算属性的使用 computed

    vue教程2-03 vue计算属性的使用 computed computed:{b:function(){ //默认调用getreturn 值}}--------------------------c ...

  6. Vue数据代理+事件处理+事件修饰符的作用+计算属性的使用,尚硅谷Vue系列教程学习笔记(2)

    尚硅谷Vue系列教程学习笔记(2) 参考课程:<尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通> 参考链接:https://www.bilibili.com/video/ ...

  7. vue 计算属性和data_Vue:计算属性

    一.为什么要使用计算属性 1.什么是计算属性 计算属性:可以理解为能够在里面写一些计算逻辑的属性.具有如下的作用: 减少模板中的计算逻辑. 数据缓存.当我们的数据没有变化的时候,不会再次执行计算的过程 ...

  8. Vue.js教程-Vue项目的目录结构和.vue文件的构成

    Vue.js教程-Vue项目的目录结构和.vue文件的构成 前言 Vue项目的目录结构(Vue-cli3/4版本) .vue文件的构成 Html区域(template) script区域 export ...

  9. 【Vue教程】Vue.js推文

    为什么前端工程师的需求这么大 我国手机用户超过13亿,活跃智能机用户超过23亿部,全国网民人数约7.51亿.这么多人,每天都有几十分钟或者几个小时,要使用手机上网.全体中国人一年消费的网页和 App ...

最新文章

  1. php数组合并如何不覆盖,php如何实现合并数组并且不覆盖重复值
  2. vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题
  3. Rafy 框架 - 大批量导入实体
  4. vue为p标签_通过vue.js几个基本操作,理解一下什么是插槽「606」
  5. ABB机器人套接口通信 机器人部分
  6. 从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用
  7. css hover变成手_web前端入门到实战:彻底掌握css动画「transition」
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的博客系统
  9. android usb存储固定,如何在Android 10中设置默认USB行为
  10. 【Vue指令】—v-if、v-show二者用法及区别
  11. 贺利坚老师汇编课程24笔记:内存单元[...]和(...)内容
  12. Error while waiting for device: The emulator process for AVD Pixel_API_30 has terminated.
  13. MicroMsg.SDK.WXApiImplV10: register app failed for wechat app signature check failed
  14. bo耳机h5使用说明_五分钟了解Bamp;O耳机音箱能不能买
  15. Linux定时器实现
  16. 三维扫描仪修复的功能有多重要
  17. java中重命名文件夹名,【Java】对文件或文件夹进行重命名
  18. 前端的一些实用算法题
  19. 杂货机器人翻车实录:会被路人“吓”到,还会跟错主人!3千美元怕是买了个寂寞?
  20. PostgreSQL的json和jsonb比较

热门文章

  1. nodejs mysql 返回值_带有Mysql数据库返回值的Nodejs
  2. 我的世界java版使用剑_我的世界:JAVA版藏“私货”内置绝世好剑与神功,你玩的版本有吗...
  3. Java学习笔记2.6.2 数组 - 二维数组
  4. Python练习:目录与文件操作
  5. NOIP2017(不算是题解)
  6. 【BZOJ1060】【codevs1435】时态同步,我可以叫它树形递推吗
  7. 【BZOJ1030】【Tyvj1806】文本生成器,AC自动机+DP
  8. 【OJ4976】硬币,神奇的背包
  9. ie11浏览器可以下载java吗_如何卸载IE11? 如何安装低版本的IE浏览器?
  10. 【英语学习】【Level 07】U05 Best Destination L5 Top choice