2016-08-15 97 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方法。

相关问题