Jaka jest różnica między trasą a zasobem w interfejsie API nowego routera?
Próbuję zrozumieć różnicę między Route
a Resource
. Sposób, w jaki Rozumiem Resource
pomaga ustawić ścieżki podrzędne obiektu Route
na inny obiekt Route
. Ale nie jest jasne, kiedy myślę o domyślnym mapowaniu nazw dzieje się również dla ścieżek.
1 answers
Zobacz ten post, aby uzyskać szczegółowe wyjaśnienie.Należy pamiętać, że począwszy od wersji 1.11.0, {[2] } jest używany tylko zamiast
this.resource
. Źródło: http://guides.emberjs.com/v1.11.0/routing/defining-your-routes/*
To jest przybliżone podsumowanie tego postu (trochę zmodyfikowałem):
Oznacza to, że router korzystający z trasy i zasobów może wyglądać tak:Od czasu zmiany zasobów i trasy Wiele osób jest mylić o znaczeniu tych dwóch i jak wpływają one na nazewnictwo. Oto różnica:
- zasób-rzecz (model)
- route-something to do with the thing
App.Router.map(function() {
this.resource("posts", { path: "/" }, function() {
this.route("new", { path: "/new" });
});
this.route("another", { path: "/another" });
});
Spowoduje to utworzenie/wykorzystanie następujących tras:
- PostsRoute, PostsController, PostsView PostsIndexRoute, PostsIndexController, PostsIndexView]}
- PostsNewRoute, PostsNewController, PostsNewView
- AnotherRoute, AnotherController, AnotherView
Jak widzimy na tym przykładzie, zasób wpływa na nazewnictwo używanych/tworzonych kontrolerów,tras i widoków ("nowa "trasa jest traktowana jako podległa zasobowi" posts"). Cytuję z oryginalnego źródła (zmodyfikowałem, bo irytowało, jak zauważył Patryk M. w komentarzach): {]}
Oznacza to, że za każdym razem, gdy tworzysz zasób, tworzysz zupełnie nowy przestrzeń nazw. Że nazwa przestrzeni nazw pochodzi od zasób i wszystkie ścieżki potomne zostaną do niego wstawione.
Aktualizacja: bardziej złożony przykład z zagnieżdżonymi zasobami
Rozważ następujący bardziej złożony przykład z wieloma zagnieżdżonymi zasobami:
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" });
});
W tym przypadku zasób comments
tworzy zupełnie nową przestrzeń nazw. Oznacza to, że powstałe trasy w tym przypadku będą następujące. Jak widać trasa, kontroler i widok dla zasobu komentarzy nie są poprzedzone nazwą trasy nadrzędnej. oznacza to, że zagnieżdżenie zasobu w innym zasobie resetuje przestrzeń nazw (=tworzy nową przestrzeń nazw).
- PostsRoute, PostsController, PostsView PostsIndexRoute, PostsIndexController, PostsIndexView]} PostsNewRoute, PostsNewController, PostsNewView]}
- CommentsRoute, CommentsController, CommentsView
- CommentsNewRoute, CommentsNewController, CommentsNewView
- AnotherRoute, AnotherController, AnotherView
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-05 04:57:11