【发布时间】:2018-06-18 13:49:50
【问题描述】:
我有一个简单的 Vue 应用程序,当您单击“添加到集合”按钮时,它应该向集合中添加一个数字 --
https://codepen.io/jerryji/pen/mKqNvm?editors=1011
<div id="app">
<input type="number" placeholder="enter a number" v-model="n">
<button type="button" @click.prevent="addToSet()">Add to Set</button>
</div>
new Vue({
el: "#app",
data: {
n: null,
nSet: new Set()
},
methods: {
addToSet: function() {
this.nSet.add(this.n);
console.log(this.n + ' added to Set');
}
},
watch: {
nSet: function (newVal, oldVal) {
console.log(newVal);
}
}
});
为什么watch在控制台中没有任何记录?
【问题讨论】:
-
您有什么理由使用
Set而不是Array?如果唯一目的是确保唯一性,您可以在推送前轻松检查indexOf。 AFAIK 没有简单的方法来观察Set的变化。 -
因为实际代码中需要Set。 codepen 只是一个精简的例子。但我明白你的意思。谢谢
-
想知道 Set 在 Vue 组件中是否是非响应式的。
标签: javascript vuejs2 codepen