我有有有子視圖,你可以骨幹 - 防止視圖被刪除後
之間切換後取Ajax調用是成功的,一個「成功」格主視圖框主視圖延遲執行被顯示。
我面臨的問題是,當我在子視圖之間切換時,來自先前視圖的提取的延遲承諾仍然執行並顯示'成功'div。
這是我的代碼:
this.model.fetch().done(function() {
$('#success').show();
});
onChangeSubview: function() {
this.subview.unbind();
this.subview.remove();
}
這太問題abort-ajax-requests-using-jquery說,你可以存儲的指針推遲,並通過調用中止(停止),像這樣:
var fetchXhr = this.model.fetch().done(function() {
$('#success').show();
});
onChangeSubview: function() {
fetchXhr.abort();
}
我有幾個爲每個子視圖提取,有些在一個時間間隔內重複,這意味着我將不得不存儲每個提取請求,並通過它們循環,每次調用abort。
有沒有更好的方法來停止執行延期功能? 例如:某種檢查子查看是否已被刪除,或解除所有延期承諾的功能?
只要大聲思考,你可以將所有提取的子視圖添加到列表中,然後onChangeSubview你可以遍歷它們並執行abort例如'this.fetches.forEach(function(fetchXhr){fetchXhr.abort();});'(或'_.invoke(this.fetches,'abort');'如果你想以Underscore的方式做到這一點)。你甚至可以把這個功能放到擴展的基本視圖中,這樣你就可以把它抽象出來。 – Dymos
@Dymos +1。你太謙虛了,這不是一個評論,而是一個實際的答案;) – hashchange
哈哈謝謝:-)我將它添加爲當時的後代的答案。 – Dymos