我想知道是否有可能(如果是,如何?:)),将依赖注入到指令调用的控制器中。
我有一个名为 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;
//}]
//}
};
}]);
指令中的解决是不可能的。 一些帮助将是欣赏 谢谢
答案 0 :(得分: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'];
答案 1 :(得分:0)
您可以使用指令
中的控制器功能.directive("sampledirective", function (dependancy1, dependancy2, ....) {
return {
scope: '=',
controller: function ($rootScope, $scope) {
//DO your controller magic here where you got your scope stuff
}
}
})
我学到的一件事似乎是$ scope范围值从指令到控制器不能立即更新。如果您使用
之类的对象 $scope.smth.smth = 'test'
立即更新,否则你需要申请