2016-05-06 14 views
0

この質問をお読みいただきありがとうございます。 私はAngularJSアプリを作っています。 私は状態を作り、ユーザーサービスで定義されているUser.getProfileを呼び出す解決策を定義しました。 これは、サービスがプロファイルの取得に成功したが、失敗したときには機能しなかった場合に、この解決策が機能しているためです。 コードを投稿させてください。サービスが失敗したときの状態を解決するには

.state('app.profile', { 
     url: '/profile', 
     views: { 
      'menuContent': { 
       templateUrl: 'views/pages/profile.html', 
       controller: 'ProfileCtrl', 
      } 
     }, 
     resolve: { 
      data: function(User) { 
       return User.getProfile(); 
      } 
     } 
    }) 

ここではサービスiを定義します。

service.getProfile = function() { 
     var deferred = $q.defer(); 

     HttpReq.sendRequest(RESTAPI.DEV_URL + RESTAPI.PROFILE, 
      'GET', 
      undefined, 
      function(result) { 
       /* 

       */ 
       if (result.success) { 
        deferred.resolve(result); 
       } 
       else { 
        deferred.reject(result); 

       } 

      }, 
      function(error, response) { 
       deferred.reject(error); 

       //uiHelper.alert($scope, 'Login Error', response.message); 
     }); 

     return deferred.promise; 
    }; 

defer.resolveがサービスで呼び出されたときにapp.profileが解決されます。 defer.rejectが呼び出されると解決されません。 私は約束の電話に問題がある場合は私を修正してください。

ありがとうございます!

+0

私は実際にあなたがして(successCallback、errorCallback) 'then'構文' '' User.getProfile()を追加することで、ステータスを取得することができ、それを取得できませんでした。実際にあなたが戻ってきているので、 '' '。約束、私はあなたがそれをどのように使用するのかわかりません –

+0

それは私が望んでいないものです。 –

+0

それはあなたが欲しいものが本当に明確ではない –

答えて

2

解決機能が失敗した場合は、それに応じて(エラーメッセージのような)ユーザーに何かを表示したいことがあります。あなたの解決関数が約束を返すようにして(それなしで)内部イベント$ routeChangeErrorを使用する方が良いでしょう。

myApp.run(['$rootScope',function($rootScope) { 
    $rootScope.$on('$routeChangeError', function() { 
    // what you want to do if an error occurs 
    // ex: $rootScope.displayErrorMessage = true 
    }); 
}]); 
+0

良い点!解決に関係なく状態を変える方法はありますか? –

関連する問題