Я использую AngularJS с шаблоном контроллеров псевдонимов. Я не могу получить доступ (или не знаю, как) директивные методы от родительского контроллера.
У меня есть функция внутри моего контроллера, которая должна вызывать метод директивы, но этот директивный метод недоступен внутри значения контроллера this
.
Это то, что у меня есть. Что я делаю неправильно?
JS
angular.module('myApp', []).
controller('MyCtrl', function(){
this.text = 'Controller text';
this.dirText = 'Directive text';
this.click = function(){
this.changeText();
}
})
.directive('myDir', function(){
return {
restrict: 'E',
scope: {
text: '='
},
link: function(scope, element, attrs){
scope.changeText = function(){
scope.text = 'New directive text';
};
},
template: '<h2>{{text}}</h2>'
};
});
HTML
<div ng-app="myApp">
<div ng-controller="MyCtrl as ctrl">
<h1>{{ctrl.text}}</h1>
<my-dir text="ctrl.dirText"></my-dir>
<button ng-click="ctrl.click()">Change Directive Text</button>
</div>
</div>
Здесь код с кодом.