0

私は AngularJS でサービスを作成してデータを保存し、失敗した場合はユーザーに警告しました。ただし、リソースを作成して $save を呼び出すと、次のようになります。

myResource.$save(function(success) {
  console.log(success);
}, function(error) {
  console.log(error);
});

エラー コールバックの引数は、データ、ステータス、ヘッダーなどを含むオブジェクトであると予想していますが、取得できるのは「then」関数を含むオブジェクトだけです。私はJSFiddleでそれをモックアップしようとしました:

http://jsfiddle.net/RichardBender/KeS7r/1/

ただし、この例は当初の期待どおりに機能します。この JSFiddle の例をヤンクして自分のプロジェクトに入れましたが、最初に説明したのと同じ問題がありますが、それにもかかわらず、他のすべてが等しいと言えます。なぜこれが考えられるのか誰にも分かりますか?私のプロジェクトは Yeoman/Bower/Grunt で作成されましたが、これらがここで違いを生む理由がわかりません。

ありがとう、リチャード

4

1 に答える 1

3

問題を解決しました。エラーは HTTP インターセプターにあり、エラー コードで、$q.reject(response) ではなく、誤って $q.reject(promise) を返していました。

バグのあるバージョン:

.factory('httpInterceptor', function($q) {
    return function(promise) {
        return promise.then(
            // On success, just forward the response along.
            function(response) {
                return response;
            },
            function(response) {
                // ... where I process the error
                return $q.reject(promise);
            }
        );
    };

修正版:

.factory('httpInterceptor', function($q) {
    return function(promise) {
        return promise.then(
            // On success, just forward the response along.
            function(response) {
                return response;
            },
            function(response) {
                // ... where I process the error
                return $q.reject(response);
            }
        );
    };

-リチャード

于 2013-06-12T06:20:47.867 に答える