我有一个组件,其目的是显示项目列表,并让用户选择一个或多个项目。
此组件是从后端API填充的,并由父组件使用props
填充。
但是,由于从prop传递的数据没有我想要的格式,因此我需要对其进行转换,并提供具有计算属性的viewmodel。
我可以使用v-on:click
来呈现列表并处理选择,但是当我设置selected=true
时,列表不会更新以反映孩子状态的变化。
我认为这是因为Vue.js不会跟踪children属性的更改,并且我可能需要使用观察者之类的东西,但这似乎不正确。对于微不足道的操作而言似乎太麻烦了,所以我必须假定我缺少某些东西。
这是完整的副本:https://codesandbox.io/s/1q17yo446q
通过单击“计划1”或“计划2”,您会在控制台中看到它已被选中,但不会反映在呈现的列表中。
有什么建议吗?
答案 0 :(得分:1)
在您的示例中,vm
是一个计算属性。
如果希望它是反应性的,则必须先声明它为空。
在此处了解更多信息:reactivity in depth。
这是您的示例working。
或者,如果您的member
来自父组件,则通过propsData
(即::member="member"
),您希望将映射器从beforeMount
移到{{ 1}}在watch
上。例如:
member