2016-09-22 126 views
0

我使用http拦截器来处理错误。是否有可能使用MD对话框弹出一个窗口,显示错误消息,一旦捕获到某些错误。将$mdDialog注入服务时发生circular dependency错误。我应该在哪里绑定errorMsg如果$mdDialog可以用于此服务?

拦截:

.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

我认为他的问题是,如果他可以在角度为 –

+0

的配置路径上声明的httpInterceptor中使用它,你已在'$ mdDialog.show()中有两次'controller'' – Phil

+0

是@PauloGaldoSandoval – vincentf

相关问题