2013-04-02 14 views
5

Rozumiem, że trasy są używane do mapowania adresów do szablonów, ale podobno można też definiować trasy z this.route lub this.resourceJaka jest różnica między this.route() a this.resource()?

App.Router.map(function() { 
    this.route("about", { path: "/about" }); 
    this.route("favorites", { path: "/favs" }); 
}); 

App.Router.map(function() { 
    this.resource('posts', { path: '/posts' }, function() { 
    this.route('new'); 
    }); 
}); 

Czy wystarczy użyć this.resource jeśli chcesz zdefiniować subroutes do Trasa lub czy istnieje inne uzasadnienie, którego nie dostaję?

Odpowiedz

8

Po prostu skorzystasz z this.resource, jeśli chcesz zdefiniować podprogramy do trasy lub czy istnieje inne uzasadnienie, którego nie otrzymuję?

Oto podstawowy pomysł.

  • zasób = rodzic (zazwyczaj rzeczownik)
  • trasa = dziecko (często czasownik)

Należy także pamiętać, że router zawsze wskazuje na aktualnej trasie. Nie może przejść do zasobu. Za kulisami Ember automatycznie generuje „index” trasą pod spodem każdego zasobu, więc nawet jeśli zdefiniować coś takiego:

App.Router.map(function() { 
    this.resource("about", { path: "/about" }); 
}); 

skończyć z tym:

App.Router.map(function() { 
    this.resource('about', { path: '/about' }, function() { 
    this.route('index'); 
    }); 
}); 
+0

Dzięki! :) Ale nie możesz zdefiniować zasobu w ramach prawa do zasobu? Co zrobić, jeśli chciał adresy URL wyglądać '/ Kontakty//edit' (jak tutaj) [link] (https://github.com/ttdonovan/ember-data-contacts/blob/master/js/app.js)? –

+2

Powinieneś być w stanie to zrobić - „Kontakt” będzie zasób mocy/(na przykład wspierane przez ArrayController) i „: contact_id” byłby inny zasób (wspierany przez ObjectController), który ma „edytuj” pod trasą to. Sprawdź sekcję zagnieżdżonych zasobów w dokumentacji: http://emberjs.com/guides/routing/defining-your-routes/#toc_nested-resources –

Powiązane problemy