Vue-使用axios请求填充道具的问题

时间:2019-07-02 18:05:45

标签: javascript vue.js axios vue-component

我有3个vue组件,分别是List,Car,AddNew

List.vue 是父组件,具有2个这样的组件:

<add-new :cars-models="carModels"></add-new>                

<car
 v-for="(car, index) in items"              
:key="car.id" 
:data="car" 
:car-models="carModels" 
>                   
</car>  

后来有这个:

data(){

   return{
     items:'',
     carModels:''     
  }

}
,
created(){
     axios.get('car-models')
         .then(({data})=>{                              
            this.carModels= data;                           
        }); 

      axios.get('cars')
         .then(({data})=>{                  
            this.items = data;  
         });                    
}

addNew.vue 中,我有以下内容:

props: ['carModels'],
data(){
   return {
      models:''
   }
},
watch:{

        carModels(){
            this.models= this.carModels;
        }

    }

我必须使用观察器,因为carModels填充在父组件中,在这里可以吗,但是在 Car.vue

props: ['carModels'],
data(){
   return {
      models:''
   }
},
watch:{

        carModels(){
            this.models= this.carModels;
        }

    }

如您所见,它是相同的,但是 this.models 并未填充道具carModels,尽管道具已填充!我不知道发生了什么 谢谢

1 个答案:

答案 0 :(得分:1)

我的猜测是这是一个计时问题。观察者carModels不会被触发,因为自组件创建以来,carModels的值就在那里。您可以做的就是修改数据,使其看起来像这样:

topic = 'new'

# See documentation on defining a message payload.
message = messaging.Message(
    data={
        'title': 'hahaha',
        'body': 'test',
    },
    topic=topic,
)

# Send a message to the devices subscribed to the provided topic.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)

这样,首先复制道具数据,然后在每次更新道具时由观察者更新

 return {
      models:this.carModels
   }