当我在html中有一个控制器时
<div ng-controller="myController" id="myCtrl">...</div>
我可以通过以下方式访问它:
angular.element(myCtrl).controller()
但是如何从指令访问控制器?
directive('myDirective', function () {
return {
...
templateUrl: '/Views/myview.html',
controller: myController
}
})
答案 0 :(得分:0)
此控制器应定义与定义指令的模块模块相同:
E.g
angular.module('myModule', [])
.controller('myController',['$scope', function($scope){
$scope.myData = {'someData':1337};
}])
.directive('myDirective', [function(){
return {
...
templateUrl: '/Views/myview.html',
controller: 'myController'
}
}])
这是一个傻瓜,展示了这种方式:
http://plnkr.co/edit/UDCWUI5EMlfoXb9u3GYh?p=preview
这里有一个plunkr,演示了在模块中使用另一个模块中定义的控制器的指令:
http://plnkr.co/edit/Gg0BzKPOqO2NnTgf3Hkr?p=preview
angular.module('myApp',[
])
.controller('MyController', ['$scope', function($scope){
$scope.someValue = 'someValueFromController';
}])
angular.module('otherModule', ['myApp'])
.directive('myDirective', [function(){
return {
restrict: 'E',
templateUrl: 'someTemplate.html',
controller: 'MyController'
}
}])
或者,您可以使用$controller服务使用适当的东西来实例化控制器并在任何地方使用它(从导入定义控制器的模块的每个模块)。