0

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の結果は、データを成功として出力し、成功をエラーとして出力します。
どうすれば修正できますか?!

4

1 に答える 1