Sto usando AngularJS con il modello di controller di alias. Non riesco ad accedere (o non so come) i metodi di direttiva da un controller genitore.Chiamare i metodi della direttiva dal controller principale in AngularJS
Ho una funzione all'interno del controller che dovrebbe chiamare un metodo di direttiva ma questo metodo di direttiva non è disponibile all'interno del valore del controller this
.
Questo è quello che ho. Cosa sto facendo di sbagliato?
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>
Here un codepen con il codice.
dovrebbe essere a ritroso, definire il metodo nel controller e quindi utilizzarlo all'interno della direttiva. – levi
chiama il metodo controller dalla direttiva.un buon approccio –
dovrebbe utilizzare il servizio invece – maxisam