vm.$watch( expOrFn, callback, [options] )
參數(shù):
{string | Function} expOrFn
{Function | Object} callback
{Object} [options]
{boolean} deep
{boolean} immediate
返回值:{Function} unwatch
用法:
觀察 Vue 實(shí)例上的一個(gè)表達(dá)式或者一個(gè)函數(shù)計(jì)算結(jié)果的變化哨苛〗嗡回調(diào)函數(shù)得到的參數(shù)為新值和舊值。表達(dá)式只接受監(jiān)督的鍵路徑螃诅。對(duì)于更復(fù)雜的表達(dá)式丁频,用一個(gè)函數(shù)取代累澡。
注意:在變異 (不是替換) 對(duì)象或數(shù)組時(shí)程帕,舊值將與新值相同案糙,因?yàn)樗鼈兊囊弥赶蛲粋€(gè)對(duì)象/數(shù)組。Vue 不會(huì)保留變異之前值的副本送粱。
示例:
// 鍵路徑vm.$watch('a.b.c',function(newVal, oldVal){// 做點(diǎn)什么})// 函數(shù)vm.$watch(function(){// 表達(dá)式 `this.a + this.b` 每次得出一個(gè)不同的結(jié)果時(shí)// 處理函數(shù)都會(huì)被調(diào)用褪贵。// 這就像監(jiān)聽(tīng)一個(gè)未被定義的計(jì)算屬性returnthis.a +this.b? },function(newVal, oldVal){// 做點(diǎn)什么})
vm.$watch?返回一個(gè)取消觀察函數(shù),用來(lái)停止觸發(fā)回調(diào):
varunwatch = vm.$watch('a', cb)// 之后取消觀察unwatch()
選項(xiàng):deep
為了發(fā)現(xiàn)對(duì)象內(nèi)部值的變化抗俄,可以在選項(xiàng)參數(shù)中指定?deep: true?脆丁。注意監(jiān)聽(tīng)數(shù)組的變動(dòng)不需要這么做。
vm.$watch('someObject', callback, {deep:true})vm.someObject.nestedValue =123// callback is fired
選項(xiàng):immediate
在選項(xiàng)參數(shù)中指定?immediate: true?將立即以表達(dá)式的當(dāng)前值觸發(fā)回調(diào):
vm.$watch('a', callback, {immediate:true})// 立即以 `a` 的當(dāng)前值觸發(fā)回調(diào)
注意在帶有?immediate?選項(xiàng)時(shí)动雹,你不能在第一次回調(diào)時(shí)取消偵聽(tīng)給定的 property槽卫。
// 這會(huì)導(dǎo)致報(bào)錯(cuò)varunwatch = vm.$watch('value',function(){? ? doSomething()? ? unwatch()? },? {immediate:true})
如果你仍然希望在回調(diào)內(nèi)部調(diào)用一個(gè)取消偵聽(tīng)的函數(shù),你應(yīng)該先檢查其函數(shù)的可用性:
varunwatch = vm.$watch('value',function(){? ? doSomething()if(unwatch) {? ? ? unwatch()? ? }? },? {immediate:true})
vm.$set( target, propertyName/index, value )
參數(shù):
{Object | Array} target
{string | number} propertyName/index
{any} value
返回值:設(shè)置的值胰蝠。
用法:
這是全局?Vue.set?的別名歼培。
參考:Vue.set
vm.$delete( target, propertyName/index )
參數(shù):
{Object | Array} target
{string | number} propertyName/index
用法:
這是全局?Vue.delete?的別名。
參考:Vue.delete