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