Javascript Vuejs:v-for中带有多个复选框的v-model

Javascript Vuejs:v-for中带有多个复选框的v-model,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我对“复杂”对象使用v模型有一些疑问。这是我的密码: <v-list v-for="(facet, facetName) in getFacets" :key="facetName"> <v-list-tile-content v-for='valueFacet in facet" :key="valueFacet.key"> <v-checkbox v-model="selectedFacets[facetName]" :value="valueFacet.

我对“复杂”对象使用v模型有一些疑问。这是我的密码:

<v-list v-for="(facet, facetName) in getFacets" :key="facetName">
 <v-list-tile-content v-for='valueFacet in facet" :key="valueFacet.key">
  <v-checkbox v-model="selectedFacets[facetName]" :value="valueFacet.key"></v-checkbox>
 </v-list-tile-content>
</v-list>
一些解释:每个方面都有多个代表值的复选框。我们可以选择多个值。我的目标必须是这样的:

selectedFacets: { facet1 : [value1, value2], facet2: [value12, value 13]
使用此代码,每次我选择一个值时,它都会删除前一个值

我试图在我的数据中初始化我的对象,但没有使用created函数:

data() {
 return {
  selectedFacets: { "facetName" : [], "facetName2" : []}
 }
}
而且效果很好。每个方面的所有my值都添加到正确的数组中。但是我需要用conf初始化我的对象和方面名称,如果我没有在数据中初始化我的对象,它就不能工作。我尝试使用computed/created,从我的存储中获取我的对象,但它通过删除前一个对象不断增加价值


知道我做错了什么吗?谢谢

只需使用
Vue.set
初始化对象即可:

created: function() {
   config.facets.forEach(facet => {
     Vue.set(this.selectedFacets, facet, []);
   });
}

当组件初始化模板时,它不知道
selectedFacets[facetName]
,所以要使其响应并正确使用
v-model
,您应该使用
Vue.set
mutator

不久前我问了一个类似的问题,你可能会发现这很有用:谢谢!我使用
this.$set
而不是
Vue.set
,但在其他方面它工作正常。
created: function() {
   config.facets.forEach(facet => {
     Vue.set(this.selectedFacets, facet, []);
   });
}