vue.js - Vue.js 使用 v-model 进行全局数据访问
问题描述
我正在开发一个网络应用程序,用户可以在其中处理项目。该应用程序的结构如下:
- 组件 A(应用程序)
- 组件 B1-Bn(页眉、页脚、主窗口等,A 的子级)
- 组件 C1(输入区域;用于用户处理项目的输入,主窗口的子窗口)
- 组件 C2(输出区域;画布显示基于来自 C1 的输入的结果。将来还有一个与 C1 同步的“图形”输入区域。主窗口的子窗口)
- 组件 D1-Dn(输入区域的单个部分,如表格、高级输入组件等。C1 的子级)
现在用户正在处理的项目包含一个存储在组件 A 中的对象。组件 Dn 需要写入组件 A 中的对象,并且将来还需要写入 C2。
我无法让输入组件 Dn 上的 v-model 工作。我试图通过 props / v-bind 将数据从 A 向下传递到 C1,然后在 Dn 中,我对来自 C1(源自 A)的 prop 进行 v-model 到输入字段。我也尝试使用同步修饰符但没有成功。
我似乎对vue逻辑缺乏了解。我来自桌面背景,您只需定义变量的范围。我还发现其他 vue 学徒也有同样的理解问题,但不知何故我找到的答案还不够。
我想要一个可以由每个组件编辑并链接到 DOM 中的元素的“全局”变量。实现这一目标的最佳方法是什么?
解决方案
在根组件(组件 A)中创建 Vue 对象时在数据中声明变量,例如
var app = new Vue({
data: function(){
return {
showSetting: {}
}
},
})
现在您可以showSetting
在任何组件中访问此变量,例如
app.showSetting;
//change it in any component
app.showSetting = {a:1,b:2};
//or append new value to object
Object.assign({d:3},app.showSetting);
推荐阅读
- java - 流过滤器线程安全
- c# - Visual Studio 的提示不显示 SqlDataReader 的“Dispose”方法
- firebase - 为什么firestore中的给定示例不能按照文档工作?
- angular - ./src/$$_gendir/app/app.module.ngfactory.ts 中的错误:无法读取未定义的属性“标志”
- python - Python websockets:如何用异步调用覆盖同步方法 WebSocketCommonProtocol.connection_made()?
- android - 文件输入在 react-native 中的 webview 中不起作用
- javascript - 从 document.getElementById .setAttribute href 获取不同的 url
- android - 循环完成后启动onActivityResult
- r - 根据r中的多个条件创建列
- reactjs - 反应渲染堆内存问题?