跟踪Vue.js中的子状态更改

时间:2019-04-20 16:49:50

标签: vue.js render viewmodel tracking children

我有一个组件,其目的是显示项目列表,并让用户选择一个或多个项目。

此组件是从后端API填充的,并由父组件使用props填充。

但是,由于从prop传递的数据没有我想要的格式,因此我需要对其进行转换,并提供具有计算属性的viewmodel。

我可以使用v-on:click来呈现列表并处理选择,但是当我设置selected=true时,列表不会更新以反映孩子状态的变化。

我认为这是因为Vue.js不会跟踪children属性的更改,并且我可能需要使用观察者之类的东西,但这似乎不正确。对于微不足道的操作而言似乎太麻烦了,所以我必须假定我缺少某些东西。

这是完整的副本:https://codesandbox.io/s/1q17yo446q

通过单击“计划1”或“计划2”,您会在控制台中看到它已被选中,但不会反映在呈现的列表中。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在您的示例中,vm是一个计算属性。

如果希望它是反应性的,则必须先声明它为空。
在此处了解更多信息:reactivity in depth

这是您的示例working

或者,如果您的member来自父组件,则通过propsData(即::member="member"),您希望将映射器从beforeMount移到{{ 1}}在watch上。例如:

member