Comment empêcher l'ajout d'un attribut HTML d'analyse de modèle Jade

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 } }]);