AngularJS - $ cancelRequest在$ resource中不可用

时间:2016-01-28 16:28:45

标签: angularjs angularjs-resource

我正在尝试解除中止请求,但我没有在$cancelRequest的结果中获得$resource个对象。但是,我可以获得$promise$resolved个对象。

为什么会这样?我怎样才能得到这个$cancelRequest

PS:我正在使用AngularJS 1.5

更新:经过一些试验和错误后,我发现它不起作用只是因为我使用的是AngularJS 1.5 rc 0.现在当我使用AngularJS 1.5 rc 2.这是当前最新的,它刚刚工作。

1 个答案:

答案 0 :(得分:8)

根据文档,它仅适用于Angular 1.5

  

$ cancelRequest:如果存在与实例或集合相关的可取消的待处理请求,则调用此方法将中止请求。

我在Angular 1.4 ...

上看不到任何提及

我只能建议您更新到1.5版本,但它仍然是rc-1版本......

要启用它,您必须配置$ resource,默认情况下,它是禁用:

  

使用应扩展默认值的自定义设置散列   $ resourceProvider行为。支持的选项包括:

     

stripTrailingSlashes - {boolean} - 如果为true,则为尾部斜杠   从任何计算的URL将被剥离。 (默认为true。)   cancellable - {boolean} - 如果为true,则由a发出请求   “非实例”呼叫将被取消(如果尚未完成)   在调用的返回值上调用$ cancelRequest()。这可以   每次动作都被覆盖。 (默认为false。)

使用此代码

<html ng-app="test">
<head>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.1/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.1/angular-resource.min.js"></script>

<script>
angular.module('test', ['ngResource'])
.config(function($resourceProvider) {
    $resourceProvider.defaults.cancellable = true;
})
.factory('Resource', function($resource) {
    return $resource('api/test', {}, {
        test: { cancellable : true }
    });
})
.controller('myController', function($scope, Resource) {
    Resource.query().$cancelRequest(); // ok 
    Resource.test().$cancelRequest(); // ok
});

</script>

</head>
<body ng-controller="myController">

</body>
</html>