J'utilise le modèle Jade en conjonction avec JS angulaire et j'ai un tel réseau de traitement de répéteur défini dans le contrôleur angulaire: $ scope.ids = ['demo1', 'demo2']
.controls(ng-repeat="controlId in ids") <div id="{{$index}}">{{$index}}</div>
Quoi que je fasse, Jade essaie d'analyser tout ce qui s'est passé à la balise SELECT et donc il supprime toujours $ index variable from tag tag. En conséquence, HTML, je vois toujours ce qui suit:
<div id="">0</div> // ID attribute is always empty because Jade replaces it <div id="">1</div> // at the same time HTML of the tag was rendered correctly
Question : comment éviter l'analyse de cet attribut HTML par Jade et la chaîne d'impression comme dans un HTML de résultat?
PS J'ai essayé la syntaxe suivante et ça ne fonctionne pas … suggestions?
id="|{{$index}}" // id is empty id!="{{$index}}" // id is empty id="!{{$index}}" // syntax error id="!{{controlId}}" // syntax error {:id => {{$index}}} // does not add ID at all
PPS Juste pour expliquer pourquoi je gagne Jade avec HTML – j'ai essayé d'utiliser la syntaxe "jade only" et cela n'a pas non plus fonctionné:
.controls(ng-repeat="controlId in ids") .demo(id="{{$index}}") {{$index}}
Essayez d'éviter l'analyse comme ça:
!{{$index}} <-- Escaped
Reportez-vous à cette publication: Comment faire pour que Jade arrête les attributs d'éléments d'encodage HTML et produise une valeur de chaîne littérale?
Et à ce problème: https://github.com/visionmedia/jade/issues/198
Et disons si ça marche!
Récemment, j'ai trouvé cette discussion commencée par Sangram:
{{$ Index}} de ng-repeat calculé après la fonction de liaison de la directive angulaire. $ Compilez-le?
Et je me suis rendu compte que Sangram avait raison à propos de cela – ce n'est pas un problème de Jade – c'est ainsi que les modèles angulaires rendent les modèles.
Il y avait une solution – pour appeler la fonction de liaison à l'intérieur de $ evalAsync – probablement, c'est une bonne alternative, mais dans mon cas, j'ai besoin de définir l'ID du contrôle immédiatement, donc je suis arrivé à cette solution – si je ne peux pas définir l'ID – je peux générer il :
app.directive('tags', ['$rootScope', function($rootScope) { var controlIndex = 0; var linker = function(scope, element, attrs) { // *** Control ID *** // element[0].id = attrs.id || 'control' + (++controlIndex); ... } return { restrict: 'EA', templateUrl: 'tags/template.html', link: linker } }]);