11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous et toutes,
Je débute sur angularjs, que je ne trouve pas très compliqué de prime abord.
Je souhaite récupérer le contenu généré par ng-repeat dans une directive, cela est-il possible, bien que la directive soit effectuée avant ng-repeat. peut-être existe-il une option ou un paramètre permettant de de le faire, exemple :
<li ng-repeat="doc in docs">{{doc.text}}</li>
Dans la directive donc, je souhaite récupérer le contenu généré dans la balise <li>

merci =)
Bonjour,

Tout d'abord, je pense qu'en postant dans la rubrique "JavaScript, DOM et API Web HTML5", tu auras plus de chances d'avoir une réponse.

Ensuite, je ne suis pas sûr de bien comprendre ta question, car dans ton exemple il n'y a qu'une seule directive (ng-repeat).
Le contenu généré par ng-repeat vient de ton tableau docs, donc si tu souhaites utiliser ces données dans une directive custom, tu peux simplement passer le tableau en attribut.
Par exemple :
<ta-directive data="docs"></ta-directive>
Modifié par TryAndShare (26 Nov 2014 - 18:54)
merci pour ta réponse, j'ai effectivemment omis de preciser la directive dans la balise, en fait ça revient à ça :

j'ai précisé restrict='A' donc c'est un attribut et non un élément comme ton exemple
<li ng-repeat="doc in docs" ma-directive="maDirective">{{doc.text}}</li>

et je traite les infos dans le controlleur de la directive, et dans cette directive (maDirective) je souhaite récupérer, si cela est dans le domaine du possible, le texte généré par {{doc.text}}
Dans ton explication, ce n'est pas vraiment ce que je recherche, si le contenu est :
texte ref.{{doc.reference}} présenté le {{doc.date}}, sujet : {{doc.text}}
C'est le texte complet généré que je souhaite récupérer.

merci =)
Modifié par quice (26 Nov 2014 - 23:43)
Dans ce cas, je pense qu'il faut utiliser la fonction link de ta directive, qui permet de manipuler le DOM grâce au paramètre element.
Merci pour ta réponse, je vais me pencher sur cette solution, mais je doute que cela fonctionne
vu que la directive est effectuée avant le ng-repeat...

Mais si une autre solution se présente, n'hésitez pas à me la donner ^^

merci
Modifié par quice (28 Nov 2014 - 09:57)
Comme je l'ai dis, je récupère le texte formaté entre les "<>xxx<>"
soit <li>texte ref.{{doc.reference}} présenté le {{doc.date}}, sujet : {{doc.text}}</li>
c'est un exemple biensûr, et je dois ajouter les textes dans une table.
Je souhaite récupérer
"texte ref D45.a4 présenté le 10 mars 2014, sujet : mise en place du protocole x"
je pourrais très bien créer 3 zones, docref, docdate et docsujet et y placer les infos respectives
et recreer la phrase, mais ce n'est pas ce que je souhaite.
Mais si vraiment ce n'est pas possible, je croisque je vais opter pour cette solution.
ai-je trouvé un "point faible" à angular?
Je ne comprends toujours pas à quoi sert ta directive... Smiley ohwell
Que veux-tu faire avec le texte récupéré ?

Si tu veux générer le texte formaté à plusieurs endroits sans répéter "texte ref.{{doc.reference}} présenté le {{doc.date}}, sujet : {{doc.text}}", il faut utiliser un filtre.

quice a écrit :

ai-je trouvé un &quot;point faible&quot; à angular?

Angular a beaucoup de points faibles, mais je pense plutôt que tu n'as peut-être pas bien compris à quoi sert une directive.
Modifié par TryAndShare (28 Nov 2014 - 15:41)
je débute sur angular ^^
Pour moi une directive sert à intervenir sur le DOM,
le modifier, ajouter ou supprimer des élements.
Ma question était juste pour savoir comment récuperer ce genre d'info apres un ng-repeat
pour en faire ce que l'on souhaite par la suite.
Le texte ne se voit que sur l'écran, mais peut-on le stocker une fois formaté ?
J'etudie angular, je suis loin de le maitriser =)
Surtout que par moment, ca fait un peu usine à gaz pour arriver à un truc, c'est l'impression que j'en ai, mais moins usine à gaz que zend...
quice a écrit :
je débute sur angular ^^

Je sais, ma remarque n'était pas méchante Smiley cligne

quice a écrit :
Pour moi une directive sert à intervenir sur le DOM,
le modifier, ajouter ou supprimer des élements.

Le but d'une directive n'est pas de manipuler le DOM comme tu le ferais avec jQuery (par exemple), mais d'ajouter un comportement spécifique à un élément.
Quel comportement veux tu ajouter au <li> ?

quice a écrit :
Ma question était juste pour savoir comment récuperer ce genre d'info apres un ng-repeat
pour en faire ce que l'on souhaite par la suite.
Le texte ne se voit que sur l'écran, mais peut-on le stocker une fois formaté ?

Quel intérêt de stocker le texte formaté ?
Si tu veux l'afficher de la même manière à plusieurs endroits, tu peux utiliser un filtre pour faire le formatage.
Si tu as besoin des données, tu as déjà tout dans l'objet docs.
Si tu as vraiment besoin de stocker le texte formaté, alors il faut le formater et le stocker dans ton controller, ou même directement dans ton model. La vue sert uniquement à afficher des données, pas à en générer.

quice a écrit :
J'etudie angular, je suis loin de le maitriser =)
Surtout que par moment, ca fait un peu usine à gaz pour arriver à un truc, c'est l'impression que j'en ai, mais moins usine à gaz que zend...

Angular's learning curve Smiley smile
Modifié par TryAndShare (28 Nov 2014 - 17:15)