2017-03-17 114 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