vue學習筆記 計算屬性(四)


計算屬性就是vue實例里的computed屬性,對應一個對象,里面可以放各種方法,方法的作用就是可以生成和數據變量對應的計算后的變量,跟數據相關的復雜邏輯變量,都可以使用計算屬性實現,computed里的函數名,對外就是一個變量,默認是getter。

<div id="example">
    <p>Original message: "{{ message }}"</p>
    <p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
<script type="text/javascript">
    var vm = new Vue({
        el: '#example',
        data: {
            message: 'Hello'
        },
        computed: {
            // a computed getter
            reversedMessage: function () {
            // `this` points to the vm instance
                return this.message.split('').reverse().join('')
            }
        }
    })
</script>

 

如果想用setter,也可以手動添加。

var vm = new Vue({
    el: '#example',
    data: {
        message: 'Hello'
    },
    computed: {
        // a computed getter
        reversedMessage: {
            get: function () {
                // `this` points to the vm instance
                return this.message.split('').reverse().join('')
            },
            set: function (newValue) {
                this.message = newValue.split('').reverse().join('')
            }
        }
    }
});

vm.reversedMessage = '12345';

 

Vue實例中還提供了另外一個屬性Watchers,用來觀察變量的變化,如果有變量的值發生了改變,watch里的函數(和變量名一致)會觸發。

var vm = new Vue({
    el: '#example',
    data: {
        message: 'Hello'
    },
    computed: {
        // a computed getter
        reversedMessage: {
            get: function () {
                // `this` points to the vm instance
                console.log('我了');
                return this.message.split('').reverse().join('')
            },
            set: function (newValue) {
                this.message = newValue.split('').reverse().join('')
            }
        }
    },
    watch: {
        message: function (newValue, oldValue) {
            console.log(1);
            console.log(newValue);
            console.log(oldValue);
        },
        reversedMessage: function (newValue, oldValue) {
            console.log(2);
            console.log(newValue);
            console.log(oldValue);
        }
    }
});

vm.reversedMessage = '12345';

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM