【发布时间】:2019-08-29 17:25:09
【问题描述】:
我正在努力将 Vue.js 的功能引入 WordPress 生态系统,我的第一个项目是在页面上进行搜索和过滤。
因为主网站最初是由 WordPress 使用 PHP/HTML 呈现的,所以我在附加到我使用 WordPress 输出的 HTML 元素的页面上初始化了 Vue。这一切都很好,但现在我试图通过拥有相同代码库的多个实例(可以一起工作)更进一步
以这个示例截图为例(假设这是一个 WordPress 网站):
由于整个输出不是在 Vue.js 中完成的,我必须从 WordPress 端输出多个 HTML DIV 元素,并在它们上初始化 Vue。
因为表单/字段将根据用户配置/设置动态生成,所以两个实例都将使用相同的代码库......但我需要以某种方式使其能够协同工作,也就是说,在任何实例中选择或更改值时更新页面上的结果。
这里的想法是在我的主 JS 文件中使用 vanilla javascript 来检测页面上存在的所有特定 HTML 元素(甚至可能为数据对象中的每个元素定义一个 slug),然后执行一个 foreach 循环来然后在每个实例上初始化一个new Vue()。
我的第一个想法是使用 Vuex 存储,将单个存储附加到所有实例,存储任何选定的值,并在其中任何一个更改时触发调度以更新列表。
以前有人做过类似的事情吗?这样做有什么我应该厌倦的吗?或者有人对如何做到这一点有更好的建议吗?
认为我最好还是在这里提问,而不是苦苦学习,然后发现这可能是不可能的,或者这样做会有问题。
非常感谢任何建议、cmets、批评或想法
更新
有一个建议是将 Vue 实例绑定到主体,删除 render 函数,然后在需要的地方输出组件 HTML 元素(而不是输出 div 然后附加到它)。打算对此进行测试,但对围绕此的想法感到好奇?
【问题讨论】:
-
事件总线是这里要看的东西。有了它,您可以让多个 Vue 实例(及其内部组件)相互通信。 VueX 也可以完成这项工作,但由于这不是 SPA,因此许多人会认为它过大。