2014-09-15 3 views
1

Je souhaite créer une directive (appelons-la "A") qui accepte le HTML pour le contenu transcrit et modifie son contenu transcrit en y ajoutant des gestionnaires ng-click à l'aide d'une logique personnalisée.Où et comment modifier le contenu transcrit?

Je pensais que le pré-lien serait un bon endroit pour le faire, mais apparemment je me suis trompé (il semble que les docs suggèrent contre).

Chaque directive "A" acceptera son propre contenu (unique), donc je ne peux pas le faire dans la phase de compilation.

Dans la fonction link Je ne sais pas ce que je peux faire ...

Ainsi, quelqu'un at-il fait quelque chose de semblable?

EDIT:

J'ai oublié de mentionner: Les gestionnaires de ngClick devraient être définis sur la portée, et non la portée des parents de la directive. Je ne sais pas si Angular permet cela, mais c'est ce dont j'ai besoin.

Répondre

1

Dans votre modèle, vous devez ajouter ng-transclude sur l'élément auquel vous souhaitez ajouter votre code HTML personnalisé.

votre utilisation de la directive:

<attribute ng-click="clickMe()"> 
     <div> 
      transcluded data 
     </div> 
    </attribute > 

et dans votre modèle:

<span ng-transclude> 
</span> 

Espoir il est logique :)

+0

Mais ce que je veux est d'ajouter la 'ng-clic 'attributs sur le modèle transcluded utilisant le code JS. Où faites-vous cela? – user2173353

+0

vérifier cela. http://plnkr.co/edit/ZD8xLh22dwlNAWjWk108?p=preview Sinon, vous devez créer un exemple de ce que vous voulez dire. – Ngschumacher

+0

Ce que je veux dire, c'est ajouter le 'ng-click =" clickMe() "' avec le code javascript écrit dans la directive, puis le compiler et le faire fonctionner. Je veux également utiliser la portée de la directive pour certaines opérations 'ngClick'. Je pense que j'ai trouvé la solution dans ces liens: http://stackoverflow.com/a/18157958/2173353 http://angular-tips.com/blog/2014/03/transclusion-and-scopes/ – user2173353