2013-03-19 12 views
5

Sono abbastanza nuovo per AngularJS e sto cercando di pensare al modo angolare.
In questo momento sto lavorando a un'app con funzioni diverse che si registrano in un servizio angolare chiamato FeatureRegistry. Da lì vengono presi e inseriti in una barra laterale da un FeatureSelectionController. Cliccando su una funzione dovrebbe essere invocata la funzione startFeature() della funzione appropriata, e successivamente la funzione dovrebbe essere aggiunta alla vista principale (ma dove dovrebbe avvenire questa manipolazione del DOM?).Inserimento di direttive in HTML in AngularJS?

Quindi c'è una mia domanda. Qual è il modo migliore (il modo angolare) di aggiungere direttive al DOM, non necessariamente voglio usare jQuery per farlo (e voglio anche limitare gli usi di $ compilare, $ guardare ecc.).

Le direttive in mainView possono avere un ambito isolato, poiché le funzionalità eseguono azioni indipendenti tra loro (i dati che condividono sono incapsulati in servizi angolari).

Here is an image

quello che sarebbe il modo angolare per inserire le direttive?

Ho sempre letto che le manipolazioni del DOM dovrebbero avvenire solo nelle direttive, ma nelle documentazioni e anche in altre domande non ho trovato IL modo per farlo.

+1

+1 Per un modo corretto di porre una domanda. – Stewie

risposta

3

ecco una rapida demo: http://plnkr.co/edit/eZTtRVTPb7k9kgS8woKh?p=preview

Non necessariamente vedo la necessità di direttive qui ... a meno che non ci sia un sacco di funzionalità comune tra funzione nella lista, la funzione massimizzata, e la caratteristica minimizzato .

Se davvero fare un sacco di funzionalità comune tra le tre liste, si potrebbe fare qualcosa di simile:

<feature ng-repeat="f in registry.all()" model="f" state="list"> 
<feature ng-repeat="f in registry.maximized()" model="f" state="open"> 
<feature ng-repeat="f in registry.minimized()" model="f" state="minimized"> 

Poi nel modello direttiva, si potrebbe avere la funzionalità comune quindi determinare che cosa abbia a seconda sullo stato utilizzando ng-switch o ng-show.

Hai bisogno di aiuto per scrivere la direttiva attuale?

Problemi correlati