【发布时间】:2018-05-20 07:39:43
【问题描述】:
在 Vuejs 中,我有一个父组件(P)和两个子组件(C1 和 C2)。父组件具有与两个子组件共享的对象。
组件 C1 显示对象(在表格中),组件 C2 允许用户修改共享对象的属性。因为对象是作为对象共享的,所以我是直接在 C2 中更新它们的属性,并且在 C1 中显示更改。
问题在于 C1 负责保存更改(通过对服务器进行 ajax 调用)。如果用户直接在 C1 中修改属性,它会触发 change 事件,并且事件处理程序会进行调用。但是,如果属性在 C2 中更新,则不会在 C1 中触发更改事件,因此更改不会持久化。
那么,问题是,如何根据 C2 中的事件在 C1 中触发更改事件?我有一个事件总线(在根元素中)。我可以(也许)使用事件侦听器来获取元素(例如使用 jQuery)并触发事件,但显然这不是最优雅的方法。 Vue的方式是什么?
【问题讨论】:
-
你应该在这种情况下使用 vuex。您的要求需要单一的事实来源。无论哪个组件触发它,只有 vuex 会存储/持久化更改!
标签: vue.js vue-component