2015-01-29 8 views
10

Podczas tworzenia "standardowego" zasobu crud w pliku Ember.js, jaka jest różnica między trasą indeksu a "główną" trasą?Ember.js - trasa indeksu kontra trasa "najwyższego poziomu"?

Na przykład, zasób użytkownicy:

// 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'}); 
    }); 
}); 

Która trasa powinna zawierać następujące "main" hak modelu?

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

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

Innymi słowy, należy używać UsersRoute lub UsersIndexRoute? Uważam to za bardzo mylące. Każda pomoc jest bardzo doceniana.

Odpowiedz

8

Należy umieścić hak modelu do UsersRoute trasie, czy dany model jest wymagane do renderowania wszystkich zagnieżdżonych trasach, tj index, new, edit i show, jak zostanie ona wywołana po wejściu każdy z tych tras.

Jeśli model jest wymagany tylko podczas renderowania trasy /, a nie /:user_id, to powinien być załadowany na trasę UsersIndexRoute.

Patrz przykład JsBin, aby zobaczyć przykład uruchamiania haków w modelu zagnieżdżonych tras.

Dla twojego przypadku użycia, może być tak czy inaczej - jeśli chcesz mieć typ użytkownika master-child, gdzie lista użytkowników jest wyświetlana również podczas edycji/pokazywania/dodawania użytkownika, powinieneś załadować i wyrenderować lista użytkowników w UsersRoute, a następnie wyrenderuj dodatkową zawartość w zagnieżdżonej trasie; jeśli zamiast tego nie chcesz wyświetlać listy użytkowników w zagnieżdżonych trasach, po prostu wczytaj je i wyrenderuj w UsersIndexRoute.

+0

To ma sens. Dziękuję Ci! Powiązane pytanie, jeśli nie masz nic przeciwko: Czy potrzebuję szablonów najwyższego poziomu dla użytkowników w obu przypadkach lub tylko z interfejsem użytkownika typu nadrzędnego-podrzędnego? –

+0

np; Nie potrzebujesz jawnie zdefiniowanego szablonu użytkownika najwyższego poziomu (lub trasy), Ember tworzy je automatycznie, jeśli ich nie zdefiniujesz; patrz zaktualizowany [JsBin] (http://jsbin.com/setavo/3/edit). – jesenko