2016-08-15 123 views
1

我正在使用Backbone js並基於啓動獲取操作的路由。因此,對於不同的路線,啓動不同集合的提取操作,並使用內容更新頁面視圖。如果我們等待dom更新,然後繼續不同的路線,那就沒有問題了。但是,如果我立即切換路由,兩個取指操作會在後臺進行,並且視圖會更新第一個,然後是第二個,這是不可取的。我搜索了四周,並知道我們可以分配一個變量來獲取操作,它將返回可以調用abort()的jqxHr對象。還遇到了如何將所有待處理的請求存儲在池中並將其全部取消。未定義:TypeError xhr.abort不是函數:Backbone

以下是我試圖通過路由實現它的代碼。

var collection = new TableCollection(); 
var xhr = collection.fetch(); 
xhr.abort(); 

,但我遇到了

未定義:類型錯誤xhr.abort不是一個函數:骨幹

當我CONSOLE.LOG(XHR)我得到它具有這些對象屬性:

Object {}always:()catch: (a)done:()fail:()pipe:()progress:()promise: (a)state:()then: (b,d,e)__proto__: 

我使用的是Jquery 3.1.0,Backbone 1.3.3,Underscore 1.8.3。

任何指針和建議將是有幫助的。

回答

0

所以我想出了這個問題。

我正在使用外部覆蓋視圖backbone-fetch-cache.js,它用於緩存抓取調用。該庫覆蓋主幹的默認提取操作。它返回一個promise對象而不是普通的jqXhr對象。所以我修改了現有的庫,以便返回jqXhr對象而不是承諾,並且我可以訪問abort方法。