1

我想知道是否有可能(如果是這樣,所以如何?:)),以注入一個依賴關係到一個指令調用的控制器。注入依賴關係控制器調用指令

我有一個名爲MyCtrl的控制器控制器。下面是他的簽名:

app.controller('MyCtrl', function ($scope, dataService, aDependency){...} 

該控制器通常在我的路線定義:

.segment('myPage', { 
       templateUrl: templatesUrl + 'mypage.html', 
       resolve: { 
        aDependency: ['$q', 'dataService', '$location', function ($q, dataService, $location) { 
         var defer = $q.defer(); 
         dataService.retrieveCCData(defer, $location); 
         return defer.promise; 
        }], 
       }, 
       controller: 'MyCtrl' 
      }) 

但現在,我也想呼籲從指令該控制器。 問題是我不知道如何注入aDependency。它說,提供者是未知的。 這裏是我的指令:

app.directive('gettingStarted1', ['dataService', function (dataService) { 
    return { 
     restrict: 'E', 
     templateUrl: templatesUrl + 'mypage.html', 
     controller: 'MyCtrl', 
     //resolve: { 
      //datasources: ['dataService', function (dataService) { 
       //return null; 
      //}] 
     //} 
    }; 
}]); 

解決指令是不可能的。 一些幫助將欣賞 謝謝

回答

1

aDependency一個單獨的服務。

app.provider('aDependency', function() { 
    this.$get = ['$q', 'dataService', '$location', function ($q, dataService, $location) { 
     var defer = $q.defer(); 
     dataService.retrieveCCData(defer, $location); 
     return defer.promise; 
    }]; 
}); 

您可以

  resolve: { 
       'aDependency': 'aDependency', 
      } 

  resolve: ['aDependency']; 
+0

「獨立服務」是什麼意思? – IsraGab

+0

我已經添加了示例。 – estus

0

你可以從指示

.directive("sampledirective", function (dependancy1, dependancy2, ....) { 

return {  
     scope: '=', 
     controller: function ($rootScope, $scope) { 
      //DO your controller magic here where you got your scope stuff 
     } 
    } 
}) 

有一件事我學會了使用控制器功能似乎$範圍值的arent立刻從指令更新到控制器。如果您使用的對象,如

$scope.smth.smth = 'test' 

它獲取更新,立刻否則你將需要$申請

+0

我prefere重新使用現有的控制器,而不是解決它重新寫。 – IsraGab