Bonjour à tous,
Je galère un peu à l’élaboration d'une directive qui me permettrai de masquer un élément en fonction d'une condition (basé sur ng-show).
J'ai réussi à faire quelque chose de fonctionnel avec une directive de type "élément" mais dont le résultat (en terme de code HTML généré) ne me satisfait pas à 100%
Mon code qui fonctionne :
Quand j'utilise : <ma-directive parameter="XXX"><span class="uneClasse">Hello</span></ma-directive>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 app.directive('maDirective', function() { var directive = { restrict: 'E', transclude: true, scope: { parameter: '@' }, template: '<div ng-show="condition" ng-transclude></div>', link: function(scope) { var condition = false; //... plusieurs lignes de calculs complexes scope.condition = condition; } }; return directive; });
J'obtiens : <div ng-show="condition" ng-transclude><span class="uneClasse">Hello</span></div>
Je voudrai idéalement créer une directive de type "attribut" que je mettrai sur mon span pour éviter l'ajout de la div supplémentaire englobante (ou de toute autre balise) qui peux potentiellement affecter mon rendu visuel. En passant le restrict en 'A' et en l'appelant <span ma-directive data-parameter="XXX" class="uneClasse">Hello</span> je me retrouve logiquement avec une div interne cette fois. Je n'arrive pas à trouver une solution pour m'en passer complètement.
Est-ce possible de faire ce que je veux ou est-ce que je cherche dans le vide ou dans la mauvaise direction ?
En espérant avoir été clair sur mes explications, merci d'avance pour votre aide.
Partager