l'ajout dynamique de directives en ng-repeat
Je suis en train d'ajouter dynamiquement des directives différentes, dans un ng-repeat cependant, la sortie n'est pas interprétés comme des directives.
J'ai ajouté un exemple simple ici: http://plnkr.co/edit/6pREpoqvmcnJJWzhZZKq
Contrôleur:
$scope.colors = [{name:"red"}, {name: "blue"}, {name:"yellow"}];
Directive:
app.directive("red", function () {
return {
restrict: 'C',
template: "RED directive"
}
});
Html:
<ul>
<li ng-repeat="color in colors">
<span class="{{color.name}}"></span>
</li>
</ul>
Comment puis-je faire angulaire ramasser la directive spécifié dans le class
qui est sortie par ng-repeat?
- question intéressante!
- Je ne suis pas sûr que ce soit possible. Vous pouvez passer de la couleur.nom en tant que paramètre à une seule directive, même s', puis vérifiez la valeur et/appeler le code à partir de là.
Vous devez vous connecter pour publier un commentaire.
Je sais que c'est une vieille question, mais google m'a amené ici, et je n'aimais pas les réponses ici... Ils semblaient vraiment compliqué pour quelque chose qui devrait être simple. J'ai donc créé cette directive:
***** NOUVEAU CONTENU * * * * * *
Depuis, j'ai fait cette directive plus générique, en soutenant un analysée (typique de la valeur angulaire) "attributs" de l'attribut.
Pour l'OP de cas d'utilisation, vous pouvez faire:
Ou de l'utiliser comme un attribut de la directive:
***** FIN DU NOUVEAU CONTENU ******
Pour le cas spécifique de cette question, on peut réécrire la directive, un peu pour le faire appliquer la directive à une plage par classe, de la manière suivante:
Alors vous pouvez l'utiliser n'importe où et sélectionnez une directive par son nom de façon dynamique. L'utiliser comme ceci:
J'ai volontairement gardé la présente directive et simple à utiliser. Vous pouvez (et probablement) ont de le remanier en fonction de vos besoins.
je pose le même problème dans un de mes projets et vous pouvez voir comment je résoudre ce problème sur jsfiddle
HTML:
JS:
J'espère qu'il sera utile.
Je ne pense pas que vous serez en mesure de simplement attribuer la directive comme un nom de classe - vous besoin d'exécuter ce à travers
$compile
de nouveau, ce qui serait de descendre vers le chemin de la récursivité des erreurs.Une solution possible est décrite à: AngularJS - comment avoir une directive avec une dynamique sous-directive
Si cela fonctionne pour votre cas d'utilisation, vous pouvez utiliser des modèles plutôt: