AngularJS 1.2.1
ngResource 1.2.1
私は最も奇妙な問題を抱えています。Andy Joslin の tokenWrapper を使用しています ( AngularJS: $resource リクエストで認証トークンを送信する方法は? )
私はそのように定義されたリソースを持っています:
.factory('someService', ['$resource', 'api_host', 'TokenHandler',
function($resource, api_host, TokenHandler) {
var Resource = $resource(api_host + 'applicant/:command/:xxx', { xxx: '@xxx', command: '@command' }, {
'get': { method: 'GET', isArray: false },
'save': { method: 'POST', isArray: false },
'create': { method: 'put', isArray: false },
'message': { method: 'post', isArray: false }
});
Resource = TokenHandler.wrapActions( Resource,
["query", "get", "save", "remove", "create", "message"] );
return Resource;
}])
tokenHandler によってラップされ、すべてのリクエストでトークンが送信されます。問題は、エラー コールバックの呼び出しにあります。
そのようなリソースを使用する場合
var interview = new someService({ command: 'doSomething', xxx: $scope.xxx});
interview.$create({}, function(response) {
console.log(response);
}, function(e) {
alert('error');
});
問題
リソースが 200 を返すと、success 関数 (第 1 引数) が呼び出されます。リソースが何か他のものを返す場合、エラー コールバックは呼び出されません。
tokenHandler をログに記録しようとしましたが、ハンドラーが引数を大量に使用しているようです。
var tokenWrapper = function( resource, action ) {
// copy original action
resource['_' + action] = resource[action];
// create new action wrapping the original and sending token
resource[action] = function( data, success, error){
console.log(success, 'success');
console.log(error, 'error');
return resource['_' + action](
angular.extend({}, data || {}, {token: tokenHandler.get()}),
success,
error
);
};
};
console.logの結果は、データを成功として出力し、成功をエラーとして出力します。
どうすれば修正できますか?!