【发布时间】:2020-09-01 05:50:56
【问题描述】:
就我而言,我有 data 包含多个对象的数组
data() {
return {
selected: 0,
presetData: [true, true, true],
data: [
{
name: "name 1"
},
{
name: "name 2"
}
]
};
},
然后我想推入data 中的每个对象,如下所示
setNewData() {
this.data.forEach((o, i) => {
this.$set(this.data[i], "time", this.presetData);
});
},
现在我将presetData 推入data 将如下所示
data: [
{
name: "name 1",
time: [true, true, true]
},
{
name: "name 2",
time: [true, true, true]
}
]
我想更改每个对象的单个 time 属性,我使用如下所示的内容
$set(item.time,selected,true)
我的问题
我的问题是,这将改变两个对象 time 属性。如何首先正确地将presetData 推送/设置为data,下面是我的全部代码,对不起,我对编程很陌生,这是jsfiddle 的链接
new Vue({
el: "#app",
data() {
return {
selected: 0,
presetData: [true, true, true],
data: [
{
name: "name 1",
},
{
name: "name 2",
}
]
};
},
methods: {
setNewData() {
this.data.forEach((o, i) => {
this.$set(this.data[i], "time", this.presetData);
});
},
}
})
<div id="app">
<button @click="setNewData">Set Data</button>
<br>
<br>
<select v-model="selected">
<option>0</option>
<option>1</option>
<option>2</option>
</select>
<div v-for="item in data" :key="item.id">
<p>{{item.name}}</p>
<p>{{item.time}}</p>
<button @click="$set(item.time,selected,true)">Change True</button>
<button @click="$set(item.time,selected,false)">Change False</button>
</div>
【问题讨论】:
标签: javascript arrays object vuejs2 vue-reactivity