【发布时间】:2020-04-20 23:58:28
【问题描述】:
我有一个文本字段,您可以在其中输入字段,on Click 它将一个值添加到呈现芯片的数组中。现在每个芯片都有一个value 属性和一个toggle 属性。默认情况下,每个新芯片都将toggle 设置为false。现在我可以添加和删除芯片。使用deleteChips 方法删除芯片。我想要做的是当只剩下一个芯片时,芯片的toggle 值应该根据当时的情况动态更改为false 或true。所以基本上toggle = !toggle。
我尝试使用array.length,但无法正常工作。
这是一个示例pen
这里是示例代码:-
new Vue({
el: "#app",
data() {
return {
inputValue: "",
inputArray: [],
selectedChip: ""
};
},
methods: {
createChips() {
this.inputArray.unshift({
value: this.inputValue,
toggle: false
});
this.inputValue = "";
},
deleteChips(chip) {
let index = this.inputArray.filter((el) => el.chip === chip);
this.inputArray.splice(index, 1);
},
chipSelection(item) {
this.selectedChip = item;
},
toggleChip(item) {
item.toggle = true;
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@1.5.14/dist/vuetify.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/vuetify@1.5.14/dist/vuetify.min.css" rel="stylesheet" />
<div id="app">
<v-app id="inspire">
<v-container>
<v-layout justify-center>
<v-flex xs6>
<v-text-field v-model="inputValue"></v-text-field>
<v-btn @click="createChips">Click Me</v-btn>
<div v-if="inputArray.length > 0">
<div v-for="chip in inputArray">
<v-chip :key="chip.value" close @click="chipSelection(chip.value)" @input=deleteChips(chip)>
<v-avatar>
<v-icon @click="toggleChip(chip.value)">
account_circle
</v-icon>
</v-avatar>
<span v-if="selectedChip === chip.value">{{chip.value}}</span>
</v-chip>
</div>
</div>
</v-flex>
</v-layout>
</v-container>
</v-app>
</div>
任何帮助将不胜感激。谢谢你。
【问题讨论】:
-
不是您问题的答案,但
v-if="inputArray.length > 0"<div />是不必要的,因为它包装了v-for -
如果您的意图是切换
.toggle属性,为什么只将其设置为true?你不想要item.toggle = !item.toggle吗? -
是的,你是对的,我想这是我正在研究的东西,我想把它带来了。
-
是和否,因为现在它只发生在我点击的那个上。相反,当数组中只剩下一个元素时,我希望它发生在最后一个元素上,而无需我先点击它。
-
所以一旦我删除倒数第二个元素,最后一个元素的属性应该设置为
toggle = !toggle
标签: javascript arrays vue.js