Vuejs --04 计算属性

一、使用原因

1、模板中表达式很便利,但实际上只适用于简单的运算,不适宜放入太多逻辑运算,例如:

<div id="example">
{{ message.split(‘‘).reverse().join(‘‘) }}
</div>

所以: 任何复杂逻辑,你都应当使用计算属性

二、使用方法

<div id="app">
     你好{{ ComMessage }}
     <p>{{ ComMsg() }}</p>
</div>

var vm = new Vue({
     el: ‘#app‘,
     data: {
          message: ‘hello world‘
     },
     computed: {
          ComMessage: function(){
               return this.message.split(‘‘).reverse().join(‘‘);     //this 指向vm实例
          }
     },
     method: {
          ComMsg: function(){
               return this.message.split(‘‘).reverse().join(‘‘);     //this 指向vm实例
          }
     }
});

三、计算属性 VS 函数方法methods

1、同:如上例子,结果都是一样

2、异:计算属性能基于它们的依赖进行缓存, 计算属性只有在它的相关依赖发生改变时才会重新求值。这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结               果,而不必再次执行函数。

//意味着下面的计算属性将不再更新,因为 Date.now() 不是响应式依赖:
computed: {
     now: function () {
          return Date.now()
     }
}

3、综上,使用计算属性还是methods,取决于是否希望有缓存

四、computed属性 VS watch属性

<div id="demo">{{ fullName }}</div>

======================================================
var vm = new Vue({
    el: ‘#demo‘,
    data: {
        firstName: ‘Foo‘,
        lastName: ‘Bar‘,
        fullName: ‘Foo Bar‘
    },
    watch: {
        firstName: function(val) {
            this.fullName = val + ‘ ‘ + this.lastName
        },
        lastName: function(val) {
            this.fullName = this.firstName + ‘ ‘ + val
        }
    }
})

=======================================================
var vm = new Vue({
    el: ‘#demo‘,
    data: {
        firstName: ‘Foo‘,
        lastName: ‘Bar‘
    },
    computed: {
        fullName: function() {
            return this.firstName + ‘ ‘ + this.lastName
        }
    }
})

五 、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]
            }
        }
    }
    // ...

六、Watchers      当你想要在数据变化响应时,执行异步操作或开销较大的操作,很有用。

时间: 2024-10-20 12:19:58

Vuejs --04 计算属性的相关文章

VueJs(7)---计算属性和侦听器

计算属性和侦听器 一. 概述 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example"> {{ message.split('').reverse().join('') }} </div> 在这个地方,模板不再是简单的声明式逻辑.你必须看一段时间才能意识到,这里是想要显示变量 message 的翻转字符串.当你想要在模板中多次引用此处的翻转字符串时,就会更加难以

VueJS计算属性: computed

computed属性 HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 菜鸟教程(runoob.com)</title> <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script> </h

vue入门(二)----模板与计算属性

其实这部分内容我也是参考的官网:http://cn.vuejs.org/v2/guide/syntax.html,但是我还是想把自己不懂的知识记录一下,加深印象,也可以帮助自己以后查阅.所谓勤能补拙. 首先我们说一下模板,其实如果看过第一节vue入门----组件,我们会知道更好更科学的办法是通过创建组件的方式,这种方式允许我们任意进行组件的嵌套.而通过模板的方式的话,个人觉得效果并没有组件好.行,开始切入正题,现在我们首先通过一下几点来进行学习(其实是按照官网的顺序记录自己不懂的知识点). 1.

vue.js基础知识篇(1):简介、数据绑定、指令、计算属性、表单控件绑定和过滤器

目录第一章:vue.js是什么? 代码链接: http://pan.baidu.com/s/1qXCfzRI 密码: 5j79 第一章:vue.js是什么? 1.vue.js是MVVM框架 MVVM的代表框架是Angular.js,以及vue.js. MVVM的view和model是分离的,View的变化会自动更新到ViewModel上,ViewModel的变化会自动同步到View上显示.这种自动同步依赖于ViewModel的属性实现了Observer. 2.它与angular.js的区别 相同

vue.js使用之计算属性与方法返回的差别

<!DOCTYPE html> <html> <head> <script src="https://unpkg.com/[email protected]"></script> <meta charset="utf-8" /> <title></title> </head> <body> <div id="app-6"&

Vue:Axios异步通信、计算属性、内容分发、自定义事件

1. Axios 什么是Axios Axios 是一个开源的可以用在浏览器端和 NodeJS 的异步通信框架,她的主要作用就是实现 AJAX 异步通信,其功能特点如下: 从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API [JS中链式编程] 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换 JSON 数据 客户端支持防御 XSRF(跨站请求伪造) GitHub:https://github.com/axios/axio

Vue 计算属性(四)

1.computed 选项: <template> <div id="app"> {{ reversedText }} </div> </template> <script> export default { name: "App", data() { return { text: '123,456' }; }, computed: { reversedText: function() { // 这里的 t

第三节、计算属性

计算属性就是当其依赖的属性的值发生变化的时候,这个属性的值就会自动更新. 例子: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="vue.js"></script> </head> <body> <div id="ap

vue2.0 之计算属性和数据监听

计算属性computed <template> <div> <input type="text" name="" v-model="myVal"><br/> {{ myValueWithoutNum }}<br/> {{ getMyValueWithoutNum() }}<br/> </div> </template> <script> e