簡體   English   中英

從指令訪問角度控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM