2016-02-09 69 views
0

我有一個生成航班列表的v-for。當用戶點擊「航班詳情」按鈕時,我向服務器發送一個AJAX請求,並將新信息附加到結果數組中。爲了更新視圖,我用$設置方法:

this.results.displayed.$set(key, _.extend({}, row, detail.items)); 

,其中關鍵是數組對象$指數,行對象,detail.items是新的數據(價格詳情)。 我需要在視圖更新後更改一些類。我在網上搜索,發現這個解決方案:

this.$nextTick(function() { 
    $(el.target).toggleClass('load'); 
}); 

其中el.target是點擊按鈕。 問題是toggleClass在視圖更新之前執行,我需要它在視圖更新後運行。 下面是完整的AJAX調用:

$.ajax({ 
    method: 'POST', 
    dataType: 'json', 
    url: this.base_info.url + 'getpricedetail?token=' + this.token, 
    data: {price_id : price_id}, 
    beforeSend: function() { 
     $(el.target).addClass('load'); 
    }.bind(this), 
    success: function (detail) { 
     this.results.displayed.$set(key, _.extend({}, row, detail.items)); 
     this.$nextTick(function() { 
      $(el.target).siblings('.prices').addClass('open'); 
     }); 
    }.bind(this), 
    error: function() { 
     data.vars.loading = false; 
    }.bind(this) 
}); 

回答

0

這可能與AJAX調用的asyncronicity問題。

你在哪裏叫$ nextTick?在AJAX調用的回調中?

我們需要一些moe代碼來解決這個問題。

+0

是的,我在成功回調AJAX請求時調用它。我更新了我的問題,以便您可以看到AJAX呼叫。 –

+0

這應該是一個評論,而不是一個答案 –

+0

是的,對不起,你是對的,仍然不習慣SO的方式.. –