2013-06-14 9 views
5

Ho una direttiva che crea un editor di testo RTF nel suo LinkingFunction. La piccola direttiva che sto utilizzando per il mio editor di testo RTF può essere trovata al https://github.com/angular-ui/ui-tinymce/blob/master/src/tinymce.js.Estensione di direttive in AngularJS (condivisione delle proprietà prima e dopo il collegamento)

Ho bisogno di estendere questa direttiva con un'altra direttiva che mi consentirà di configurare le opzioni di default e accedere all'elemento creato dalla direttiva precedente.

Se possibile, desidero eseguire questa operazione senza impostare la direttiva originale ui-tinymce (collegata in precedenza). In questa direttiva ci sono due proprietà:

  • uiTinymceConfig che ho bisogno di essere in grado di accedere e configurare prima di questa direttiva LinkingFunction viene eseguito (prima che le opzioni sono passate a TinyMCE)
  • tinyInstance che ho bisogno di manipolare dopo è stato creato da questa direttiva

ho fatto un sacco di ricerca in extending directives, così come i diversi attributi disponibili per l'"Directive Definition Object", come ad esempio link, pre-link, post-link, compile e controller. Ho sperimentato la condivisione di proprietà tra due direttive utilizzando alcuni di questi metodi, ma non ho trovato una soluzione adatta alle mie esigenze (sopra).

Sono felice di inserire questo codice di direttiva originale se non è possibile ottenere ciò che è necessario senza farlo.

risposta

1

Così ho studiato questo un po 'per voi, e ho trovato this Plnkr.

Ciò consente di ignorare il valore fornito per l'iniezione. Si noti che è possibile farlo in un modulo che dipende dal sottomodulo, in modo da poter fornire diverse configurazioni per moduli diversi che dipendono dal sottomodulo, che sarebbe utile per la direttiva ui-tinymce.

Utilizzando un principio simile, si dovrebbe essere in grado di modificare il valore di configurazione per uiTinymceConfig semplicemente sovrascrivendolo. Puoi anche fare this e sovrascriverlo nel modulo base se lo desideri.

Se si desidera modificare l'istanza stessa dopo l'istanziazione, è sufficiente accedervi utilizzando l'attributo ID e chiamando tinymce.get('#IDattribute') direttamente in qualsiasi punto del codice.

+0

Una breve nota sull'accesso all'istanza dopo l'istanziazione: ho provato 'tinymce.get (attrs.id)' nella mia seconda direttiva, ma il problema è che il 'LinkingFunction' della mia direttiva personalizzata viene chiamato prima della' ui- direttiva tinymce' imposta l'attributo ID. –

+0

Stavo semplicemente incatenando le direttive sul mio elemento, quindi, ad esempio: '' –

+0

Questo potrebbe non essere il più desiderabile, ma forse inserire un attributo ID su ogni elemento con la direttiva ? In questo modo verrà risolto da te e non dalla direttiva, ad esempio '