Vue.js 计算属性

Vue.js 计算属性

使用计算属性的实例:

<!DOCTYPE html>
<html>
    <head>
        <meta cahrset="utf-8">
        <title>computed</title>
        <script src="vue.min.js"></script>
    </head>
    <body>
        <div id="app">
            <p>原始字符串:{{message}}</p>
            <p>反转后字符串{{reversedMessage}}</p>
        </div>
        <script>
        var vm = new Vue({
            el: ‘#app‘,
            data: {
                message: ‘Runoob‘
            },
            computed: {
                // 计算属性的 getter
                reversedMessage :function(){
                    // `this` 指向 vm 实例
                    return this.message.split(‘‘).reverse().join(‘‘)
                }
            }
        })
        </script>
    </body>
</html>

提供的函数将用作属性 vm.reversedMessage 的 getter 。 vm.reversedMessage 依赖于 vm.message,在 vm.message 发生改变时,vm.reversedMessage 也会更新。

computed vs methods

我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。

<!DOCTYPE html>
<html>
    <head>
        <meta cahrset="utf-8">
        <title>computed</title>
        <script src="vue.min.js"></script>
    </head>
    <body>
        <div id="app">
            <p>原始字符串:{{message}}</p>
            <p>反转后字符串{{reversedMessage()}}</p>
        </div>
        <script>
        var vm = new Vue({
            el: ‘#app‘,
            data: {
                message: ‘Runoob‘
            },
            methods: {
                reversedMessage: function () {
                return this.message.split(‘‘).reverse().join(‘‘)
                }
            }
        })
        </script>
    </body>
</html>
  • 可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。

computed setter

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

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>getters of computed</title>
        <script src="vue.min.js"></script>
    </head>
    <body>
        <div id="app">
            <p>{{site}}</p>
        </div>
        <script>
        var vm = new Vue({
            el: ‘#app‘,
            data: {
                name: ‘Google‘,
                url: ‘http://www.google.com‘
            },
            computed: {
                site: {
                    // getter
                    get: function(){
                        return this.name + ‘ ‘ + this.url
                    },
                    // setter
                    set: function(newValue){
                        var names = newValue.split(‘ ‘)
                        this.name = names[0]
                        this.url = names[names.length - 1]
                    }
                }
            }
        })
        // 调用 setter, vm.name 和 vm.url 也会被对应更新
        vm.site = ‘百度 www.baidu.com‘;
        document.write(‘name:‘ + vm.name);
        document.write(‘<br>‘);
        document.write(‘url: ‘ + vm.url);
        </script>
    </body>
</html>
时间: 2024-10-12 11:38:59

Vue.js 计算属性的相关文章

vue.js计算属性

高清大图下载

vue中计算属性,方法,侦听器

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue中计算属性,方法,侦听器</title> <script src="./vue.js"></script> </head> <body> <div id="app&qu

vue的计算属性

在模板中写入过多的逻辑使模板过重且难以维护.因此有了计算属性(computed)的产生. 你可以像绑定普通属性一样在模板中绑定计算属性,vue知道计算属性中的函数依赖data中的数据.所以当data中的数据发生变化时.所有依赖计算属性中的函数也会更新.而且最妙的是,我们已经以声明的方式创建了这种依赖关系:计算属性的getter是没有副作用的,这使得它易于推理和测试. 1,计算属性与methods 我们将同一函数定义为method,而不是一个计算属性,得到的结果都是一样的.然而两者的不同:计算属性

关于vue的计算属性以及双向绑定的原理理解(vue2.x)以及vue3.0

vue的计算属性: 1.什么是计算属性? 计算属性的目的是用于对数据进行简单运算的,若在模板中放过多的计算逻辑会导致模板难以维护. 计算属性是基于它们的依赖进行缓存的.计算属性只有在它的相关依赖发生改变时才会重新求值. 2.计算属性如何使用? 1.在一个计算属性里可以完成各种复杂的逻辑,包括运算.函数调用等,只要最终返回一个结果就可以. computed: { reverseText: function(){ return app1.text.split('').reverse().join('

Vue中计算属性

一般情况下属性都是放在data中的,但是有些属性可能是需要经过一些计算才能得出,那么,我们可以把这类属性变成计算属性.此时,需要将这些计算属性写到computed中,和将属性写在data中是一样的.表面上看,计算属性和methods一样,实际上,计算属性更加智能,他是基于它们的响应式依赖进行缓存的.也就是说,只要相关依赖(比如下面的例子中的“area”)没有发生变化,那么这个计算属性的函数就不会重新执行,而是直接返回之前的值.这个缓存功能使计算属性访问起来更高效. 计算属性set: set方法是

Vue之计算属性

上一篇里演示了计算属性的优点,但是,computed和data里的属性还是有区别的,computed的一个弱点就在于依赖于data属性的更新,才能触发视图更新. 举个例子: 上个例子中谈到用v-for来加载妹子图片,现在我想在原先的基础上,添加两个按钮,一个用来增加一个妹子,一个用来减少一个妹子: html: <div id="vfor"> <template v-for="mm in mms"> <span>{{mm.name}

通俗易懂了解Vue的计算属性

1.前言 之前在学习vue的过程中,一直没有搞明白计算属性是个怎么回事,以及为什么要有计算属性,使用计算属性有什么好处.今天花时间翻了翻官方文档,才搞清楚其中一二,现将学习心得总结记录如下. 2.为什么要使用计算属性 试想有这样一个场景: 当我们在网购的时候,打开购物车,我们在增加或减少购物车内货物的数量时,下面的消费总额也在随着联动变化. 那么有了这个场景,我们用vue来简单实现一下.话不多说,直接上代码: 1 <!DOCTYPE html> 2 <html lang="en

VUE:计算属性和监视

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- 1.计算属性: 在computed属性对象中定义计算属性的方法 在页面中使用{{方法名}}来显示计算结果 2.监视属性: 通过vm对象的$watch()或watch配置来监视指定的属性 当属性变化时,回调函数自

vue之计算属性和侦听器

一.使用计算属性 模板内的表达式是非常便利的,但适用于简单运算.在模板中放入太多的逻辑会让模板过重且难以维护. <script src="vue.js"></script> <div id="app"> <p>{{ msg.split("").reverse().join("") }}</p> </div> <script> var vm= n