Directive AngularJS avec isolat scope, ng-repeat et controllerAs
Zack
function directive() {
return {
restrict: 'E',
template: '<button ng-repeat="x in j.array" ng-click="j.set(x)">{{x}}</button>',
replace: true,
//scope: {},
bindToController: {
array: '=',
answer: '='
},
controller: function() {
var j = this;
j.set = function(data) {
j.answer = data;
};
},
controllerAs: 'j'
};
}
Lorsque je décommente la portée et crée une portée isolée, la directive ne fonctionne plus. J'essaie de déterminer pourquoi.
Normalement, j'ai toujours accès au contrôleurAs dans un ng-repeat
, dans cet exemple, lorsque je le perds, il est toujours disponible sur $parent.j
. Je pense qu'il y a 3 solutions.
La solution 1 est de ne pas le laisser dans une portée isolée.
La solution 2 serait de convertir chaque référence à l' j
intérieur de la répétition en $parent.j
.
La solution 3 est qu'il existe un moyen d'utiliser j
sans avoir à utiliser ce $parent
que je ne connais pas.
Sophie
Cela a peut-être à voir avec le replace: true
. Si vous enveloppez le button
dans un div
, cela semble fonctionner! J'ai fait un petit Plunker ici pour démontrer.