vue.js反应性不适用于对象数组

时间:2020-07-02 03:55:40

标签: vue.js

vue.js反应性不适用于对象数组。

html .. 
<div v-if="a && a.arr" v-for="k in a.arr">
  {{k.name}}
</div>

data .. 
{
   a:{}
} 
methods ..
{
 updateA(){
   a.arr=[];
   a.arr.push({name:'abc'});
 },

 updateA2(){ 
   let b = a.arr && a.arr[0];
   if(b){
    b.name='xyz';
    // Vue.set(b,'name','xyz');
   }
 }

}

甚至尝试过 Vue.set或this。$ set,但无济于事

1 个答案:

答案 0 :(得分:0)

您应该尝试这样:

html .. 
<div v-if="a && a.arr" v-for="k in a.arr">
  {{k.name}}
</div>

data()
{
  return {
   a: {
     arr: [],
   }
  };
} 
methods:
{
 updateA(){
   a.arr=[];
   a.arr.push({name:'abc'});
 },

 updateA2(){ 
   let b = a.arr && a.arr[0];
   if(b){
    this.$set(b,'name','xyz');
   }
 }

}