[英]Access angular controller from directive
當我的HTML中有一個控制器時
<div ng-controller="myController" id="myCtrl">...</div>
我可以通過以下方式訪問它:
angular.element(myCtrl).controller()
但是如何從指令訪問控制器?
directive('myDirective', function () {
return {
...
templateUrl: '/Views/myview.html',
controller: myController
}
})
應該在定義指令的模塊模塊中定義該控制器:
例如
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服務實例化帶有適當填充的控制器,並在各處使用它(從導入定義了控制器的模塊的每個模塊中使用)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.