簡體   English   中英

Vue.js $ emit沒有在回調時觸發父函數

[英]Vuejs $emit didn't trigger parent's function on callback

我的問題就是這樣的: Vuejs $ emit不會在callback上觸發 但是我在項目中使用了超級代理。 這是我的代碼:

//Parent.vue
<Child v-on:savevideo="toSaveVideo"/>
...
methods:{
  toSaveVideo:function(data){
    console.log('add');
  }
}

//Child.vue
<button @click="toAdd">Add</button>
...
methods:{
  toAdd:function(){
    ...
    let self = this;
    superagent
      .get(url)
      .query({data:data})
      .end(function(err,res){
        //trigger parent function
        let resData = res.body.data;
        self.$emit('savevideo',resData);
    })
  }
}

該請求成功,但是當觸發“ savevideo”時,父級中的“ toSaveVideo”方法未打印任何內容。 但是,當我將emit放到回調之外時,一切都很好。 為什么$ emit事件不會在回調中觸發?

好的,我知道了。

“ v-if”綁定在子組件上。

因為在我的項目中,子組件中還有另一個觸發器“關閉”以關閉此子組件,並且該觸發器在回調之外發出,因此引起了問題。

//Parent.vue
<Child v-on:savevideo="toSaveVideo" v-if="showChild" v-on:close="toClose"/>
...
methods:{
  toClose:function(){
    this.showChild = false;
  }
}

//Child.vue
<button @click="toAdd">Add</button>
...
methods:{
  toAdd:function(){
    ...
    let self = this;
    superagent
      .get(url)
      .query({data:data})
      .end(function(err,res){
        //trigger parent function
        let resData = res.body.data;
        self.$emit('savevideo',resData);
        //'close' should be emitted here!
    })
    this.$emit('close'); //bad code!! This cause the problem!
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM