Angularjs $resource.query()回调结果意外
我正在开发angular web应用程序。我想利用查询的错误回调来通知用户刚刚发生了一些错误。但结果并非我所期望的,以下是控制器方法:Angularjs $resource.query()回调结果意外,angularjs,callback,ngresource,Angularjs,Callback,Ngresource,我正在开发angular web应用程序。我想利用查询的错误回调来通知用户刚刚发生了一些错误。但结果并非我所期望的,以下是控制器方法: $scope.fetchAllPlayers = function() { $scope.players = PlayerFact.query({ active: true }, undefined, function() { console.log('set
$scope.fetchAllPlayers = function() {
$scope.players = PlayerFact.query({
active: true
},
undefined,
function() {
console.log('set fetchPlayersFailed to true!!!!');
$scope.fetchPlayersFailed = true;
}
);
};
下面是测试代码:
it('fetchAllPlayers: should set fetchPlayersFailed to true when error happens', function() {
httpBackend.expectGET('/api/players?active=true').respond(500);
scope.fetchAllPlayers();
httpBackend.flush();
expect(scope.fetchPlayersFailed).toEqual(true);
});
运行单元测试后,以下是错误的控制台输出:
Chrome 32.0 (Windows) LOG: 'set fetchPlayersFailed to true!!!!'
Chrome 32.0 (Windows) Controller: PlayerCtrl fetchAllPlayers: should set fetchPl
ayersFailed to true when error happens FAILED
Expected false to equal true.
Error: Expected false to equal true.
at null.<anonymous> (C:/Users/I056958/Documents/My Own/javascript wo
rkspace/redjoker/test/spec/controllers/player.js:111:38)
Chrome 32.0 (Windows) LOG: 'set fetchPlayersFailed to true!!!!'
Chrome 32.0 (Windows): Executed 5 of 5 (1 FAILED) (0.297 secs / 0.043 secs)
所以我对回调感到困惑:(以下是
(正式文件)
$scope.players=
不会做您认为它会做的事情。您需要通过$resource(…)在成功回调中设置它。从promise(首选模式)获取或通过随后的回调进行设置
$scope.fetchAllPlayers = function() {
$scope.players = PlayerFact.query({
active: true
},
undefined,
undefined,
function() {
console.log('set fetchPlayersFailed to true!!!!');
$scope.fetchPlayersFailed = true;
}
);
};
HTTP GET "class" actions: Resource.action([parameters], [success], [error])
non-GET "class" actions: Resource.action([parameters], postData, [success], [error])
non-GET instance actions: instance.$action([parameters], [success], [error])