未定义:TypeError xhr.abort不是函数:Backbone

时间:2016-08-15 07:19:50

标签: javascript jquery ajax backbone.js

我正在使用Backbone js并根据路由启动了一个获取操作。因此,对于不同的路由,启动不同集合的获取操作,并使用内容更新页面视图。如果我们等待dom更新然后进入不同的路线,那么就没有问题了。但是,如果我立即切换路由,则在后台进行两次获取操作,并且视图将使用第一个更新,然后第二个更新,这是不可取的。我四处搜索并且知道我们可以为fetch操作分配一个变量,它将返回我们可以调用abort()的jqxHr对象。还遇到了如何在池中存储所有待处理请求并取消所有这些请求。

以下是我尝试进行工作的代码,以便跨路径实现它。

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

但我遇到了

  

未定义:TypeError xhr.abort不是函数:Backbone

当我在console.log(xhr)时,我得到一个具有以下属性的Object:

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。

任何指示和建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

所以我想出了问题。

我正在使用外部覆盖视图backbone-fetch-cache.js,它用于缓存提取调用。该库会覆盖backbone的默认提取操作。它返回一个promise对象而不是普通的jqXhr对象。所以我修改了现有的库,以便返回jqXhr对象而不是promise,我可以访问abort方法。