Bitte beachten Sie, dass ab 1.11.0 this.route
nur noch anstelle von verwendet wird this.resource
. Quelle: http://guides.emberjs.com/v1.11.0/routing/defining-your-routes/ *
In diesem Beitrag finden Sie eine ausführliche Erklärung.
Dies ist eine grobe Zusammenfassung dieses Beitrags (ich habe ein wenig geändert):
Seit dem Wechsel zu Ressource und Route sind viele Menschen verwirrt über die Bedeutung der beiden und wie sie sich auf die Benennung auswirken. Hier ist der Unterschied:
- Ressource - eine Sache (ein Modell)
- Route - etwas mit der Sache zu tun
Dies bedeutet, dass ein Router, der eine Route und eine Ressource verwendet, möglicherweise folgendermaßen aussieht:
App.Router.map(function() {
this.resource("posts", { path: "/" }, function() {
this.route("new", { path: "/new" });
});
this.route("another", { path: "/another" });
});
Dies würde dazu führen, dass die folgenden Routen erstellt / verwendet werden:
- PostsRoute, PostsController, PostsView
- PostsIndexRoute, PostsIndexController, PostsIndexView
- PostsNewRoute, PostsNewController, PostsNewView
- AnotherRoute, AnotherController, AnotherView
Wie aus diesem Beispiel hervorgeht, wirkt sich die Ressource auf die Benennung der verwendeten / erstellten Controller, Routen und Ansichten aus (Die "neue" Route wird der Ressource "Beiträge" untergeordnet behandelt). Zitieren Sie aus der Originalquelle (ich habe es geändert, weil es irritierend war, wie Patrick M in den Kommentaren richtig hervorhob):
Dies bedeutet, dass beim Erstellen einer Ressource ein brandneuer Namespace erstellt wird. Dieser Namespace ist nach der Ressource benannt und alle untergeordneten Routen werden in sie eingefügt.
Update: komplexeres Beispiel mit verschachtelten Ressourcen
Betrachten Sie das folgende komplexere Beispiel mit mehreren verschachtelten Ressourcen:
App.Router.map(function() {
this.resource("posts", { path: "/" }, function() {
this.route("new", { path: "/new" });
this.resource("comments", { path: "/comments" }, function() {
this.route("new", { path: "/new" });
});
});
this.route("another", { path: "/another" });
});
In diesem Fall erstellt die Ressource comments
einen brandneuen Namespace. Dies bedeutet, dass die resultierenden Routen in diesem Fall die folgenden sind. Wie Sie sehen können, wird der Route, dem Controller und der Ansicht für die Kommentarressource nicht der Name der übergeordneten Route vorangestellt. Das bedeutet, dass das Verschachteln einer Ressource in einer anderen Ressource den Namespace zurücksetzt (= einen neuen Namespace erstellt).
- PostsRoute, PostsController, PostsView
- PostsIndexRoute, PostsIndexController, PostsIndexView
- PostsNewRoute, PostsNewController, PostsNewView
- CommentsRoute, CommentsController, CommentsView
- CommentsNewRoute, CommentsNewController, CommentsNewView
- AnotherRoute, AnotherController, AnotherView
Dieses Verhalten wird auch in den Ember Docs erläutert .