考虑一个允许显示/编辑博客帖子的VueJS应用程序。
prop
传递给模态组件。 data
对象,作为填充表单字段的模型,反之亦然,当用户更改表单字段时更新。 问题:如何将作为prop
传递的博客帖子连接到模态组件的data
字段,以便:
完成此任务的正确Vue方法是什么?
答案 0 :(得分:4)
你有三种(至少)方法:
1)通过prop
属性连接数据,就像您一样,但是为其添加.sync
属性。这样,当在表单上修改数据时,它也会在组件上自动修改。此解决方案的问题在于更新是自动的,因此如果验证失败,或者用户关闭模态而不保存更改,则无论如何都会保存这些更改。例如:https://jsfiddle.net/Lz3aq64f/
2)另一种方法是将模式保存到$dispatch
事件,并保存已保存的信息。 blogpost元素应该监听此事件并采取相应的行动。
关于模态:
this.$dispatch('update-post', this.title, this.author);
在博客上:
this.$on('update-post', function(title, author) {
this.title = title;
this.author = author
});
如果blogpost组件和模态组件不在同一层次结构中,事情会变得更复杂,并且您可能需要使用公共父元素作为代理。考虑modal
元素dispatching
信息,#app
元素通过$on
捕获它,然后$broadcast
执行blogpost
元素
3)使用vuex
之类的东西作为状态的中央存储库。我不知道你的申请有多大,但这是最干净的方式:http://vuex.vuejs.org/en/index.html