【发布时间】:2019-10-22 17:21:05
【问题描述】:
我对 vue 和 vuetify 都很陌生,所以我的代码中可能有几行可怕的代码,但我真的在这方面苦苦挣扎,如果能得到一些帮助会很好。
我在“items”数组上使用 v-for 循环生成了一组复选框。这个复选框数组附加到模型数组,就像 vuetify 文档中的 this example 一样。
它看起来像下面的代码。
问题是:如果我更改 items 数组,即使模型数组仍然为空,所有复选框最终都会被选中。
这是我的模板:
<div id="app">
<v-app>
<v-content>
<v-container>
<div>
<v-list>
<v-list-item
v-for="item in items" :key="item.id"
>
<v-checkbox
v-model="model" :label="item.name"
:value="item"
:value-comparator="comparator"
></v-checkbox>
</v-list-item>
</v-list>
<v-btn @click="updateItems">Change elements</v-btn>
</div>
</v-container>
</v-content>
</v-app>
</div>
和脚本
new Vue({
el: "#app",
vuetify: new Vuetify(),
data() {
return {
model: [],
items: [
{
id: 1,
name: "Item1"
},
{
id: 2,
name: "Item2"
},
{
id: 3,
name: "Item3"
},
{
id: 4,
name: "Item4"
}
]
};
},
methods: {
comparator(a, b) {
return a.id == b.id;
},
updateItems() {
this.items = [
{
id: 1,
name: "Element1"
},
{
id: 2,
name: "Element2"
},
{
id: 3,
name: "Element3"
},
{
id: 4,
name: "Element4"
}
]
}
}
});
还有一个codepen is way easier to understand
我已经在这个问题上苦苦挣扎了一段时间,如果你有任何想法,那将是受欢迎的。谢谢!
编辑:我的代码出错了。修复。问题还是一样。
【问题讨论】:
-
您能解释一下为什么要实现这个目标吗?当您首先更新所有项目时,我不明白模型 arr 的用途是什么?如果你能解释一下你的情况,也许有更简单的方法。
-
我正在其他地方使用模型数组。我想知道选择了哪些项目但需要不时将项目添加到可选项目列表中
-
我建议您创建一个名为
totalSelected的新数组,当您单击按钮时,将模型 arr 保存到 totalSelected 中,然后安全地重置数据和模型。我认为没有更清洁的方法。 -
这实际上是最干净的方法。我添加了
this.model = this.model.slice(0),问题就消失了。我仍然不太确定它为什么会发生,但至少它现在有效。谢谢!
标签: vue.js checkbox vuetify.js