使用$ event或通过Vue.js中的$ parent操作父级数据

时间:2017-05-15 20:58:16

标签: javascript vue.js vuejs2 vue-component

我对Vue.js相当新,我最终使用$ parent在父组件上操作数组。我只是想知道这样做是否有危险:

setTitle(title) {
        this.$parent.items[this.index].name = title;
        this.editTitle = false;
}

而不是使用$ emit发出事件,然后在父级上侦听它?

将来会以任何方式烧毁我吗?

我很想知道,因为我从来没有看到它像我遇到的任何教程中的第一个解决方案一样。

1 个答案:

答案 0 :(得分:4)

通过孩子操纵父母存在一些危险,类似于通过父母操纵孩子。如果您重复使用代码来删除或修改操作系统中另一个对象的任何代码,那么主要问题往往在于责任和耦合的分离。

通过发出事件并让父母处理更新的信息,您可以在多个地方重复使用该对象而无需修改,因为任何不需要更新其项目的父级都可以忽略该事件。

这也使得维护代码变得更加困难,因为有人可能会看到数组得到更新但却看不到更新它的父对象中的代码。在您的示例中,它不难发现,但如果您的程序变得更复杂,则可能需要一些时间来查找,更新或调试。