2017-03-17 53 views
1

enter image description here我开始将角材料包含到角1.5v项目中。我还使用了ion-latest,其中包括ng-animate和ng-sanitize捆绑文件。当我向工厂注入$ mdDialog服务时,Iam得到低于错误,但是当我将$ mdDialog注入到控制器时它工作正常。可能是什么原因我如何解决这个问题?

Uncaught Error: [$injector:cdep] Circular dependency found: $http <- $templateRequest <- $$animateQueue <- $animate <- $$interimElement <- $mdDialog <- alumDialogFactory <- HttpHandler <- $http <- $templateFactory <- $view <- $state 

dialog.factory.js 
------------------------ 
angular 
.module('app.factory.Dialog') 
.factory('DialogFactory', ['$mdDialog', function($mdDialog) { 
    return { 
     alert: function($mdDialog, title, msg) { 
      $mdDialog.show(
       $mdDialog.alert() 
       .parent(angular.element(document.querySelector('#popupContainer'))) 
       .clickOutsideToClose(false) 
       .title(title) 
       .textContent(msg) 
       .ariaLabel(title) 
       .ok('OK') 
       .targetEvent() 
      ); 
     }, 
}]); 
+0

这完全取决于正在使用该服务在哪里。与往常一样,循环依赖关系通过$ injector.get解决。 – estus

回答

1

您可以$动态注入任何依赖性:

.factory('DialogFactory', ['$injector', function($injector) { 
    return { 
     alert: function(title, msg) { 
      var $mdDialog = $injector.get('$mdDialog'); 
      ... 
     } 
+0

$ injector.get('$ mdDialog')没有理由在alert中。它可以在方法外调用一次。 – estus