Quanti controller angolari e / o direttive sono troppi?

3

Sto costruendo una grande tabella di dati modificabile con angolazione e sto cercando di capire quale sia la migliore pratica.

La tabella avrà un paio di centinaia di righe, con un paio di dozzine di colonne, quindi più di 2000 celle. Ogni cella deve essere modificabile in linea.

Il mio primo pensiero è stato quello di avere direttive a livello di cella, quindi assomigliasse a qualcosa del tipo:

<editablecell model="some model expression"></editablecell>

Ma sono preoccupato per le prestazioni della creazione di migliaia di istanze di direttive, ognuna con un proprio ambito, controller e listener di eventi. Sono preoccupato che se la tabella deve essere ridisegnata (si modifica l'ordinamento, ad esempio) le prestazioni ne risentiranno.

È consigliabile avere una direttiva per riga che abbia un controller e un modello più carnoso per gestire tutto il binding dei dati e la gestione degli eventi a un livello superiore, e quindi creare meno ambiti figlio e listener di eventi?

    
posta alexp 29.01.2014 - 03:40
fonte

1 risposta

1

Non mi preoccuperei troppo del numero di direttive e controller, almeno non senza dati sulle prestazioni. L'uso corretto delle direttive e dei controller è ciò che rende la pagina manutenibile. Si tratta di creare un insieme riutilizzabile di componenti che puoi combinare.

Il numero di osservatori può essere problematico in quanto significa che ogni ciclo di diga sparerà a tutti quegli osservatori. Quanto dei dati è dinamico e quanto è statico?

Per i dati statici, Angular 1.3 ha aggiunto i collegamenti una tantum che possono aiutarti a ridurre il numero di osservatori. Puoi leggere questi qui . Se hai a che fare con migliaia di righe di dati dinamici, non sono sicuro che ci sia davvero molto che puoi fare per ottimizzarlo. Richiede semplicemente molto tempo per aggiornare migliaia di informazioni. Potrebbero esserci alcune ottimizzazioni che puoi fare con ulteriori informazioni sul caso soggettivo su cui stai lavorando.

    
risposta data 25.12.2014 - 18:43
fonte

Leggi altre domande sui tag