2016-09-22 7 views
0

エラーを処理するためにhttpインターセプタを使用しています。いくつかの特定のエラーがキャプチャされたら、エラーメッセージを表示するウィンドウをポップアップするためにmd-dialogを使用することは可能ですか?サービスに$mdDialogを注入すると、エラーcircular dependencyが発生します。このサービスで$mdDialogを使用することができます場合、私はどこにバインドする必要がありますerrorMsg

インターセプター:

.factory('httpInterceptor', ['$q', '$mdDialog', function($q, $mdDialog){ 
    return { 
     'response': function(res) { 
      var status = res.data.status; 
      var errorMsg = res.data.payload.message; 
      if(status === 'fail') { 
       $mdDialog.show({ 
       // controller: ???, 
       // scope: ???, 
       templateUrl: 'error.html', 
       }) 
       return $q.reject(res); 
      } 
      return res; 
     } 
    } 
}]) 

答えて

2

はいあなたは、コントローラを使用して$スコープ変数を表示し、解決することができ

$mdDialog.show({ 
     controller: function($scope, $mdDialog){ 
     // do something with dialog scope 
     }, 
     template: '<md-dialog aria-label="My Dialog">'+ 
        '<md-dialog-content class="sticky-container">{{test}}' + 
        '</md-dialog-content>' + 
        '<md-button ng-click=close()>Close</md-button>' + 
        '</md-dialog>', 
     controller: 'modalCtrl', 
     resolve: { 
     test: function() { 
      return 'test variable'; 
     } 
     } 
    }); 

コントローラー:

app.controller('modalCtrl', function($scope, $mdDialog, test) { 
    $scope.test = test; 
}); 

DEMO

+0

彼の問題は、角度の設定パスで宣言されているhttpInterceptorの中で使うことができると思うということです。 –

+0

あなたは '$ mdDialog.show()'に 'controller'を二度持っています。 – Phil

+0

はい@PauloGaldoSandoval – vincentf

関連する問題