2013-01-04 10 views
7

Ho un po 'di problemi a comprendere la relazione concettuale tra controllori e percorsi in un'applicazione Ember.Comprensione della relazione tra controllori e percorsi in Ember

Ho iniziato il percorso di un semplice spike test per valutare Ember, e più approfondisco, più vedo che i miei percorsi si riempiono di quello che avrei dovuto passare per il controller responsabilità, ad esempio azioni, cablaggio di modelli e infine invio a una vista per il rendering di un modello.

I controller sono tutti vuoti e sembrano essere solo un segnaposto per alcuni requisiti di mappatura automatica.

Mi manca una cosa fondamentale qui - provenendo da una prospettiva Rails, e applicando (forse erroneamente) la "via delle rotaie" a Ember mi aspettavo che i miei percorsi definissero stati rappresentati da URL, che verrebbero mappati su un controller "azione".

Qualsiasi suggerimento sarebbe molto apprezzato.

+4

Hai visto la documentazione più recente? Anche se non sono completamente realizzati, penso che ti fornirà alcuni suggerimenti. http://emberjs.com/guides/routing/ http://emberjs.com/guides/controllers/ –

+0

Ehi no - li hanno aggiornati dall'ultima volta che ho guardato, fantastico grazie. Leggerò su di loro e vedrò se assistono :) –

+1

Sì, penso che provenire dal mondo di Rails non dovrebbe essere troppo difficile per te capire ... dopotutto, Yehuda sta lavorando su entrambi ^^ –

risposta

2

Mentre le classi del modello gestiscono gli oggetti e il loro stato, il controller gestisce lo stato dell'applicazione stessa.

Un caso di utilizzo molto semplice potrebbe essere quello di avere due stati per un modulo: readonlyMode e modifyMode. Questo chiaramente non appartiene al modello in cui sono definiti gli oggetti reali. È solo uno stato della tua applicazione.

Se il controller dice che lo stato è di sola lettura, la vista renderà tutti i campi di input disabilitati. Il contrario va per il modifyMode.

Ma sono d'accordo che non è sempre facile decidere dove metterlo. Alla fine, MVC parla di concetti. Dovendo metterlo in una sorta di regole, direi:

  • tutto ciò che rappresenta i dati persistenti (memorizzati in una sorta di memoria/DB) è solitamente parte del modello.
  • tutto ciò che aiuta a rendere lo stato stateful => controller.
+1

Grazie - Ho un solido apprezzamento delle responsabilità dei modelli in un pattern MVC, il problema con Ember è che introduce il concetto del router, che dal mio punto di vista sembra incapsulare molto del comportamento che mi sarei aspettato di trova nei controller. La separazione delle preoccupazioni tra i controllori e le rotte sta iniziando a diventare più chiara anche se mi muovo attraverso il processo. –

+0

Vero. A mio parere, la vecchia API del router (prima di 1.0 pre3) ha tentato lo sviluppatore di mettere molto nel routing. Ma la nuova API, rilasciata solo pochi giorni fa, ha un approccio molto più pulito. Ho appena riscritto un componente di un'applicazione per utilizzare la nuova API. Sembra ora molto più pulito e meglio separato. –

+0

Sì, abbiamo appena aggiornato il nostro router con il nuovo stile - siamo completamente d'accordo, le modifiche al pre3 del router rendono l'intera discussione un po 'discutibile, ora è molto più chiara. –

Problemi correlati