vue之计算属性和侦听器

一、使用计算属性

模板内的表达式是非常便利的,但适用于简单运算。在模板中放入太多的逻辑会让模板过重且难以维护。

<script src="vue.js"></script>

<div id="app">
    <p>{{ msg.split("").reverse().join("") }}</p>
</div>
<script>
    var vm= new Vue({

        el:‘#app‘,
        data:{
            msg:‘this is a vue demo!‘
        }
    })

</script>

在上述中字符串的反转逻辑放在模板中,这样是不利于维护的,而且后期处理也不是那么容易。对于复杂的逻辑,比较好的方式就是运用计算属性。

<div id="app">
    <p>{{ reverseMsg }}</p>

</div>
<script>
    var vm= new Vue({

        el:‘#app‘,
        data:{
            msg:‘this is a vue demo!‘
        },

        computed:{
            //默认只有getter方法,reverseMsg方法挂载到实例vm上
            reverseMsg:function () {
                return this.msg.split("").reverse().join("")

            }
        }

    })

</script>

很明显,此时将逻辑写入到计算属性中,这样避免了模板中写入大量的逻辑。

二、侦听属性

侦听属性侦听的是数据属性,当data中的数据源发生变动后,在计算属性中就会有所体现。

<div id="app">
    <p>{{ reverseMsg }}</p>
    <button @click="changeData">修改data数据源msg</button>

</div>
<script>
    var vm= new Vue({

        el:‘#app‘,
        data:{
            msg:‘this is a vue demo!‘
        },

        methods:{
            //修改msg的值
            changeData(){
                this.msg="modify msg"
            }
        },

        computed:{
            //默认只有getter方法,reverseMsg方法挂载到实例vm上
            reverseMsg:function () {
                return this.msg.split("").reverse().join("")

            }
        }

    })

</script>

输出:

可以看到,data中的数据一旦发生改变,Vue立即侦听到变化,并且反应到计算属性中,从而在页面中显示。

三、计算属性的setter

计算属性默认是getter方法,但是它也有setter方法,这两个方法是在何时调用呢?

//当获取值时调用getter方法
//当给值赋值时调用setter方法
<div id="app">
    <p>{{ reverseMsg }}</p>
    <button @click="changeData">修改data数据源msg</button>

</div>
 var vm= new Vue({

        el:‘#app‘,
        data:{
            msg:‘this is a vue demo!‘
        },

        methods:{
            changeData:function () {
                this.reverseMsg=‘modify msg‘ //给计算属性中的reverseMsg赋值,调用setter 方法
            }
        },

        computed:{

            reverseMsg:{

                set:function (newValue) {
                    this.msg=newValue //newValue就是赋的值modify msg
                },

                get:function () {
                    return this.msg.split("").reverse().join("")
                }

            }
        }

    })

可以看到,当给计算属性中的reverseMsg赋值就会调用setter方法,其中的参数就是传递过来的新赋的值,当然你也可以不写这个值,最后获取值调用的就是setter中实际给的值。

原文地址:https://www.cnblogs.com/shenjianping/p/11220531.html

时间: 2024-10-13 23:00:41

vue之计算属性和侦听器的相关文章

1.3 Vue中的计算属性和侦听器

Vue中的计算属性和侦听器 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Vue中的计算属性和侦听器</title> <!--1 引入Vue库--> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

Vue.js 实战教程 V2.x(7)计算属性和侦听器

7计算属性和侦听器 7.1计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的. 在模板中放入太多的逻辑会让模板过重且难以维护. 所以,对于任何复杂逻辑,你都应当使用计算属性. 基础例子 <div id="example"> <p>Original message: "{{ message }}"</p> <p>Computed reversed message: "{{ reversedMe

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

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

Vue.js学习日记(3)——计算属性和侦听器

1.计算属性 模板不仅可以是简单的声明式逻辑,也可以是较为复杂的表达式. <div id="element"> <!--简单声明--> {{message}} <!--复杂表达式,表示变量message的翻转字符串--> {{message.split('').reverse().join('')}} </id> 如果表达式过于复杂,将不利于直接理解.当需要在模板中多次引用message的翻转字符串时,操作也会变得繁琐. 所以,对于任何复

5.计算属性和侦听器

计算属性 所以,对于任何复杂逻辑,你都应当使用计算属性.  vm.reversedMessage 的值始终取决于 vm.message 的值. 计算属性缓存 vs 方法 你可能已经注意到我们可以通过在表达式中调用方法来达到同样的效果: 不同的是计算属性是基于它们的响应式依赖进行缓存的. 只在相关响应式依赖发生改变时它们才会重新求值.这就意味着只要 message 还没有发生改变, 多次访问 reversedMessage计算属性会立即返回之前的计算结果,而不必再次执行函数. 相比之下,每当触发重

Vue计算属性和侦听器

计算属性 模板内的表达式非常便利,但是在模板中放入太多的逻辑会让模板过重切难以维护.对于任何复杂逻辑都应该使用计算属性. <p>{{ reverseMsg }}</> var vm = new Vue({ el: '#example', data: { message: 'hello' }, computed: { reverseMsg: function() { return this.message } } }) 这里声明一个计算属性reverseMsg.我们提供的函数将作用属

计算属性和侦听器

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

vue中计算属性和侦听属性

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

VUE 计算属性 vs 侦听属性

计算属性 vs 侦听属性 Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性.当你有一些数据需要随着其它数据变动而变动时,你很容易滥用 watch——特别是如果你之前使用过 AngularJS.然而,通常更好的做法是使用计算属性而不是命令式的 watch 回调.细想一下这个例子: <div id="demo">{{ fullName }}</div> var vm = new Vue({ el: '#demo', data: { fi