Фон
Рассмотрим следующий, очень простой плагин:
import SomeObject from "./SomeObject";
/**
* Some Cool Plugin...
*/
export default {
install(Vue){
Vue.prototype.$someObject = Vue.observable(SomeObject);
}
}
Цель вышеизложенного состоит в том, чтобы зарегистрировать объект, который будет реагировать во всем приложении.
Проблема и вопрос
Vue.prototype.$someObject
содержит определенные свойства, которые должны быть watched
на глобальном уровне, а не на уровне компонента.
Есть ли способ присоединить наблюдатель кэкземпляр Vue в методе install
плагина Vue?
Обратите внимание, я не ищу следующий ответ, я уже знаю, что это можно сделать, но он побеждаетточка разделения кода в плагин. Глобального миксина также было бы недостаточно ...
watch: {
'$someObject.foo': {
handler(value) {
console.log(value);
}
}
}
То, что я попробовал
Основываясь на документации, изложенной здесь , я предположил, что могу что-то сделать вместестроки следующие:
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) });
}
}