javascript - 窗口对象上的 Watcher Vue JS
问题描述
我想在全局窗口对象中存储组件之间的一些变量,所以我这样做了 window.showFilters = !window.showFilters
在组件中,我试图在窗口对象上使用观察器,例如
watch: {
"window.showFilters": {
handler: () => {
console.log(window.showFilters);
},
deep: true
}
},
但是,这不起作用,所以我必须使用 Vuex,我只想将其用于业务数据,而不仅仅是代码变量。是否有正确的方法来观察窗口对象中的变量?
解决方案
如果您不想使用 Vuex 存储(这是推荐的方式 - 您可以简单地将业务和应用程序状态分隔在 2 个不同的 Vuex 模块中),那么建议您将这些变量存储在根 Vue 实例中(在你的main.js
)
全局变量(又名window
属性)的问题在于它们不是反应式的。您可以尝试使用this.$set(window, 'showFilters', true)
,但这很丑陋并且可能不起作用。
但是即使将变量放在根 Vue 实例中,您仍然需要通知组件有关更改的值 - 您可以通过仅发出事件来做到这一点(观察者只能观察同一组件内的变化 - 而不是组件之间的变化)
推荐阅读
- c# - 错误 XLS0525 在类型中找不到方法 - 绑定泛型委托时?
- r - 如何更改ggplot2中geom_rects图例的顺序?
- xml - 在 XSD 中,是否可以为属性设置替代类型?
- javascript - javascript:插入带有innerHTML的html标签
- c# - ASP Web API:将对象序列化为 JSON 时指定自定义字段名称
- r - 在轴上显示数字而不是 e
- angularjs - AngularJS:页面加载后执行 JavaScript 脚本
- python - Python对特定字符的爆炸函数
- javascript - Javascript中数组的嵌套过滤
- python - 错误 ModelForm 在 django 中没有指定模型类