天天看點

Vue.js 監聽屬性

本章節,我們将為大家介紹 Vue.js 監聽屬性 watch,我們可以通過 watch 來響應資料的變化。

以下執行個體通過使用 watch 實作計數器:

<div id = "app">

<p style = "font-size:25px;">計數器: {{ counter }}</p>

<button @click = "counter++" style = "font-size:25px;">點我</button>

</div>

<script type = "text/javascript">

var vm = new Vue({

el: '#app',

data: {

counter: 1

}

});

vm.$watch('counter', function(nval, oval) {

alert('計數器值的變化 :' + oval + ' 變為 ' + nval + '!');

</script>

以下執行個體進行千米與米之間的換算:

<div id = "computed_props">

千米 : <input type = "text" v-model = "kilometers">

米 : <input type = "text" v-model = "meters">

<p id="info"></p>

el: '#computed_props',

kilometers : 0,

meters:0

},

methods: {

computed :{

watch : {

kilometers:function(val) {

this.kilometers = val;

this.meters = this.kilometers * 1000

meters : function (val) {

this.kilometers = val/ 1000;

this.meters = val;

// $watch 是一個執行個體方法

vm.$watch('kilometers', function (newValue, oldValue) {

// 這個回調将在 vm.kilometers 改變後調用

document.getElementById ("info").innerHTML = "修改前值為: " + oldValue + ",修改後值為: " + newValue;

})

點選 "嘗試一下" 按鈕檢視線上執行個體

以上代碼中我們建立了兩個輸入框,data 屬性中, kilometers 和 meters 初始值都為 0。watch 對象建立了 data 對象的兩個監控方法: kilometers 和 meters。

當我們再輸入框輸入資料時,watch 會實時監聽資料變化并改變自身的值。可以看下如下視訊示範:

<video></video>

<source src="//static.runoob.com/video/QQ20180227-140311-HD.mp4"></source>

您的浏覽器不支援 video 标簽。