2014-05-16 2 views
16

Esistono due modi (AFAIK) per associare un controller a un modello di vista/parziale: il percorso specificato in $routeProvider e la direttiva ngController. Soprattutto (ma non esclusivamente) per il routing semplice, c'è qualche vantaggio/efficienza di uno rispetto all'altro?

Il mio progetto utilizza attualmente l'approccio $ routeProvider, ma mi è stato assegnato il compito di nidificare le viste. Questo sembra abbastanza semplice con ngInclude, purché il partial specifichi il suo ngController.

risposta

5

Se si pensa a una vista che include tutti gli script come un pacchetto autonomo, sviluppato da una singola persona o squadra, quindi ngController è la strada da percorrere, imho.

$routeProvider d'altra parte fornisce funzionalità avanzate come l'iniezione di valori tramite la proprietà resolve del percorso. In questo modo è possibile inserire direttamente i dati AJAX caricati direttamente nel controller, ad esempio, anziché che il controller abbia a disposizione esso stesso. O avere la modifica del percorso di attendere che i dati ecc

Btw: Se avete bisogno di routing e vista nested si può dare un'occhiata a angular ui-router

+0

Grazie mille per questa risposta! Attualmente sto usando $ stateProvider invece di $ routeProvider, la stessa cosa vale qui? – 0x1ad2

13

Questa domanda arriva davvero al design e in quanto tale è un po 'basata sull'opinione. Questo in mente, la migliore guida che so è:

  • $routeProvider - Consente di specificare un singolo controller per un modello. Poiché fa parte del routing, è facile trovare il controller che accompagna la pagina. Lo uso per archiviare e caricare la logica della pagina generale piuttosto che la logica specifica dell'elemento.

    Questo è anche importante perché significa che è possibile caricare lo stesso modello per due percorsi diversi ma il comportamento ei dati potrebbero essere diversi perché il controller può essere modificato. Questo non è qualcosa che è facile da fare con l'opzione ngController.

  • ngController - Questo circoscrive il controller a un elemento specifico nella pagina/modello. Ciò può semplificare la lettura del codice quando sono necessari più controller su una singola pagina e consente al controller di essere più mirato.

Quindi si tratta veramente basso per portata e intento. Speriamo che queste regole ti aiuteranno nel decidere quale usare.