【发布时间】:2020-02-04 19:53:59
【问题描述】:
背景
考虑以下非常基本的插件:
import SomeObject from "./SomeObject";
/**
* Some Cool Plugin...
*/
export default {
install(Vue){
Vue.prototype.$someObject = Vue.observable(SomeObject);
}
}
上面的目的是在我的应用程序中注册一个可以反应的对象。
问题和疑问
Vue.prototype.$someObject 包含在全局级别而不是组件级别上需要为 watched 的某些属性。
有没有办法在 Vue 插件的 install 方法中将观察者附加到 Vue 实例?
请注意,我不是在寻找以下答案,我已经知道这是可以做到的,但它破坏了将代码分离为插件的意义。一个全局的 mixin 也是不够的......
watch: {
'$someObject.foo': {
handler(value) {
console.log(value);
}
}
}
我尝试过的
根据here 概述的文档,我认为我可以按照以下方式做一些事情:
export default {
install(Vue){
Vue.prototype.$someObject = Vue.observable(SomeObject);
// I have tried all of the following:
Vue.watch(Vue.prototype.$someObject.foo, value => { console.log(value) });
Vue.$watch(Vue.prototype.$someObject.foo, value => { console.log(value) });
Vue.prototype.watch(Vue.prototype.$someObject.foo, value => { console.log(value) });
Vue.prototype.$watch(Vue.prototype.$someObject.foo, value => { console.log(value) });
Vue.watch(Vue.$someObject.foo, value => { console.log(value) });
Vue.$watch(Vue.$someObject.foo, value => { console.log(value) });
Vue.prototype.watch(Vue.$someObject.foo, value => { console.log(value) });
Vue.prototype.$watch(Vue.$someObject.foo, value => { console.log(value) });
}
}
【问题讨论】:
标签: javascript vue.js watch