zoukankan      html  css  js  c++  java
  • Vue官网教程-计算属性和监听器

    <div id="app">
            
            <p>原来:{{message}}</p>
            <p>逆转:{{reverseMessage}}</p>
    
            
    
        </div>
    
    
        <script>
            
            var vm = new Vue({
                el:'#app',
                data:{
                    message:'Hello'
                },
                computed:{
                    reverseMessage:function(){
                        return this.message.split('').reverse().join('');
                    }
    
                }
            });
    
        </script>

    message 改变,计算属性也会改变,看计算属性依赖了this什么

    <div id="app">
            
            <p>原来:{{message}}</p>
            <p>逆转:{{reverseMessageFunction()}}</p>
            <p>没有依赖的元素:{{test}}</p>
    
            
    
        </div>
    
    
        <script>
            
            var vm = new Vue({
                el:'#app',
                data:{
                    message:'Hello',
                    test:'test'
                },
                methods:{
                    reverseMessageFunction:function(){
                        console.log('调用了reverseMessageFunction');
                        return this.message.split('').reverse().join('');
                    }
                },
                computed:{
                    reverseMessage:function(){
                        console.log('调用了reverseMessage');
                        return this.message.split('').reverse().join('');
                    }
    
                }
            });
    
        </script>

    可以看到,就算改变不相关的元素,方法都会被调用

    但是不知道为什么,就算改变message,计算属性也没打印出东西

    <div id="app">
            
            <p>{{fullName}}</p>
    
            
    
        </div>
    
    
        <script>
            
            var vm = new Vue({
                el:'#app',
                data:{
                    firstName:'Foo',
                    lastName:'Bar',
                    fullName:'Foo Bar'
                },
                watch:{
                    // 监听的data中的某个值
                    //function是对应的回调函数 val是变化后的值
                    firstName:function(val){
                        this.fullName = val + ' '+this.lastName;
                    },
                    lastName:function(val){
                        this.fullName = this.firstName+ ' '+val;
                    }
    
                }
            });
    
        </script>

    直接对计算属性赋值的时候,才会用到setter

    函数方法里面,一定要用this!

    <div id="app">
            
            <p>{{fullName}}</p>
            <p>{{test}}</p>
    
            
    
        </div>
    
    
        <script>
            
            var vm = new Vue({
                el:'#app',
                data:{
                    firstName:'Foo',
                    lastName:'Bar',
                    test:'test'
                },
                computed:{
                    fullName:{
    
                        get:function(){
                            console.log('计算属性函数');
                            return this.firstName+' '+this.lastName;
                        },
    
                        set:function(newValue){
    
                            // 获取到的新值,要更改依赖值才会触发重新计算
                            var name = newValue.split(' ');
                            this.firstName = name[0];
                            this.lastName = name[1];
                        }
    
                    }
                }
            });
    
        </script>

    现在就能看到get里面的打印语句了。

    只有依赖被更改的时候才会重新计算,其他元素的更改不会重新计算。

  • 相关阅读:
    软件新人问题解答(一)
    项目上线流程
    面试题:如何测试登录功能
    软件测试人员在工作中如何运用Linux
    认识接口测试
    刚入职的新人如何快速了解公司业务
    软件测试人员每天的工作日常
    面试题分析(二)如何避免漏测
    [谨记]记线上事故并分析原因
    面试经验分享:遇到不会回答的问题怎么回答才好
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9523122.html
Copyright © 2011-2022 走看看