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' jintérieur de la répétition en $parent.j.
La solution 3 est qu'il existe un moyen d'utiliser jsans avoir à utiliser ce $parentque je ne connais pas.

Sophie

Cela a peut-être à voir avec le replace: true. Si vous enveloppez le buttondans un div, cela semble fonctionner! J'ai fait un petit Plunker ici pour démontrer.

Articles connexes


Directive AngularJs avec ControllerAs et classe TypeScript

squadwuschel J'ai écrit une directive AngularJs avec TypeScript pour copier modelValues dans le presse-papiers et «l'ancienne» version $ scope pour les directives fonctionne bien jusqu'à présent: module App.Directives { interface ICopyToClipboardScope extends

AngularJS et ng-style avec ng-repeat

Valerio J'ai un problème avec ng-style avec ng-repeat. Voici mon code: <div style="display:table-row" ng-repeat="row in Data.Communications" id="{{row.Guid}}"> <div style="display:table-cell;"> <img ng-src="{{row.Path}}" ng-show="row.Path" ng-style="

angularjs et barre de boutons dynamique avec ng-repeat

Marc J'utilise angularjset je souhaite définir dynamiquement une barre de boutons. Quelque chose comme ça: <div class="bar bar-subheader" ng-show="tournament.gameTableCreated"> <div class="button-bar"> <div ng-repeat="category in categories | order

Initialisation de select avec AngularJS et ng-repeat

Charles O .: J'essaie d'obtenir la boîte de sélection pour commencer avec une option pré-remplie en utilisant ng-repeat avec AngularJS 1.1.5. Au lieu de cela, la sélection commence toujours par rien de sélectionné. Il a également une option vide, dont je ne ve

Liens dynamiques avec angularjs et ng-repeat

gel d'été Je crée une application à l'aide de la fausse API JSONplaceholder . J'affiche une liste de messages et je veux que les titres des articles répétés par ng soient liés à la vue des articles. Voici le HTML: <body layout="column" ng-app="myApp" ng-cl