【发布时间】:2020-04-03 06:09:32
【问题描述】:
我使用的是 Vue.js,并且我创建了一个计算属性,该属性存储在我的 vuex 中。出于某种原因,当我创建我的观察者并将项目添加到数组中时,观察者不会启动。虽然,当我控制台日志时,它肯定里面有项目
computed:{
selectedZonesTest(){
return this.$store.state.selectedZonesTest;
}
},
.......
selectZones: function(ev){
if (ev.target.className.baseVal !== null && typeof ev.target.className.baseVal !== "undefined"){
this.zoneId = ev.target.id
this.selectedZones.push({boneId:this.boneId, zoneId: this.zoneId});
if(this.selectedZonesTest.length == 0){
this.selectedZonesTest[this.boneId] = [this.zoneId];
}else{
for(var i in this.selectedZonesTest){
if(this.getKeyExist(this.boneId) == true){
if(this.zoneExists(this.zoneId) === true){
// console.log("1");
this.removeZone(this.zoneId)
}else{
// console.log("2");
this.selectedZonesTest[this.boneId].push(this.zoneId);
}
}else{
// console.log("3");
this.selectedZonesTest[this.boneId] = [this.zoneId];
}
}
}
}
console.log(this.selectedZonesTest);
},
}
}
</script>
<style>
.cls-1{
fill: #fff;
}
.selected{
fill: red;
}
</style>
【问题讨论】:
-
我怀疑以
this.selectedZonesTest[this.boneId] =开头的行。他们似乎可能违反了反应性警告。this.selectedZonesTest是数组还是对象? -
你的循环变量
i没有在循环内部使用也很奇怪。 -
我创建了循环但还没有使用它,对于 Vue.js 来说还是很新的。基本上我想要的是当一个新项目被添加到一个项目的数组中时,我试图在 UI 上显示它。我会进一步调查
标签: vue.js computed-properties