Tem*_*ary 4 angularjs angularjs-resource
我试图解雇中止请求,但我没有得到$cancelRequest结果的对象$resource.但是,我能够得到$promise和$resolved对象.
为什么会这样?我怎么能得到这个$cancelRequest?
PS:我正在使用AngularJS 1.5
更新:经过一些试验和错误后我发现它不起作用只是因为我使用的是AngularJS 1.5 rc 0.现在当我使用AngularJS 1.5 rc 2.这是当前的最新版本时,它只是起作用.
根据文档,它仅适用于Angular 1.5:
$ cancelRequest:如果存在与实例或集合相关的可取消的待处理请求,则调用此方法将中止请求.
我在Angular 1.4上看不到它的任何提及......
我只能建议你更新到1.5版本,但它仍然是一个rc-1版本......
要启用它,您必须配置$ resource,默认情况下,它是禁用的:
使用应扩展默认$ resourceProvider行为的自定义设置散列.支持的选项是:
stripTrailingSlashes - {boolean} - 如果为true,则将删除任何计算URL的尾部斜杠.(默认为true.)cancellable - {boolean} - 如果为true,则通过对调用的返回值调用$ 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>
Run Code Online (Sandbox Code Playgroud)