1 回答

TA貢獻1831條經驗 獲得超4個贊
在 Vue 2 中,只有 Vue 實例暴露watch. 當 Vue 3 到來時,您將有其他選擇,但現在您只能使用 Vue 實例。
也就是說,你可以在插件中有一個實例,所以它應該很容易實現你想要的:
import Vue from 'vue';
import SomeObject from './SomeObject';
/**
* Some Cool Plugin...
*/
export default {
install (Vue) {
Vue.prototype.$someObject = Vue.observable(SomeObject);
new Vue({
watch: {
'$someObject.foo' () {
// Do something
}
}
})
}
}
此處創建的 Vue 實例沒有被渲染。它的存在純粹是為了給我們一種觀看方式$someObject。
我知道你在問題中排除了這一點,但我真的不明白為什么。也許您沒有打算創建一個專門用于觀看的專用 Vue 實例?
另一種方法是使用屬性設置器而不是watch. 這個想法是用來Object.defineProperty為你想要“觀察”的屬性創建一個 setter,然后把你需要的任何副作用放在 setter 中。
添加回答
舉報