2015-01-29 10 views
10

Beim Erstellen einer "Standard" Crud Ressource in Ember.js, was ist der Unterschied zwischen der Index Route und der "Haupt" Route?Ember.js - Indexroute vs. "Top-Level" -Ressourcenroute?

Zum Beispiel kann ein Benutzer Ressource:

// app.router.js 

Router.map(function() { 
    this.resource('users', function() { 
     this.route('new'); 
     this.route('show', { path: '/:user_id'}); 
     this.route('edit', { path: '/:user_id/edit'}); 
    }); 
}); 

Welche Route sollte die folgenden "main" Modell Haken enthalten?

// app/routes/users/index.js OR app/routes/users.js? 

export default Ember.Route.extend({ 
    model: function() { 
     return this.store.find('user'); 
    } 
}); 

Mit anderen Worten, sollte ich die UsersRoute oder die UsersIndexRoute verwenden? Ich finde das sehr verwirrend. Jede Hilfe wird sehr geschätzt.

Antwort

8

Sie sollten ein Modell Haken UsersRoute Weg stellen, wenn ein bestimmtes Modell erforderlich ist, alle verschachtelten Routen zu machen, das heißt index, new, edit und show, wie es aufgerufen wird, wenn eine dieser Routen eingeben.

Wenn das Modell nur beim Rendern / Route erforderlich ist, ein nicht /:user_id Routen, dann sollte es in UsersIndexRoute Route geladen werden.

Ein Beispiel für den Fall, dass Modell-Hooks verschachtelte Routen ausgelöst werden, finden Sie unter JsBin.

Für Ihren Anwendungsfall könnte es so oder so sein - wenn Sie möchten, Master-Kind Art von UI haben, wo Liste der Benutzer auch gemacht wird, wenn die Bearbeitung/Anzeigen/Hinzufügen von Benutzern, sollten Sie laden und rendern Liste der Benutzer in UsersRoute, und dann nur zusätzlichen Inhalt in der verschachtelten Route rendern; Wenn Sie stattdessen keine Liste von Benutzern in verschachtelten Routen darstellen möchten, laden Sie sie einfach und geben Sie sie in UsersIndexRoute wieder.

+0

Das macht Sinn. Vielen Dank! Verwandte Frage, wenn es Ihnen nichts ausmacht: Brauche ich in beiden Fällen die Top-Level-Benutzervorlage oder nur mit einem Master-Kind-UI-Typ? –

+0

np; Sie benötigen keine Top-Level-Benutzervorlage (oder Route), die explizit definiert wird. Ember erstellt sie automatisch, wenn Sie sie nicht definieren. siehe aktualisiert [JsBin] (http://jsbin.com/setavo/3/edit). – jesenko

Verwandte Themen