Tenga en cuenta que desde 1.11.0 en adelante, this.route
solo se usa en lugar de this.resource
. Fuente: http://guides.emberjs.com/v1.11.0/routing/defining-your-routes/ *
Eche un vistazo a esta publicación para obtener una explicación detallada.
Este es un resumen aproximado de esta publicación (he modificado un poco):
Desde el cambio de recurso y ruta, mucha gente está confundida sobre el significado de los dos y cómo afectan el nombre. Esta es la diferencia:
- recurso - una cosa (un modelo)
- ruta - algo que ver con la cosa
Entonces, esto significa que un enrutador que usa una ruta y un recurso podría verse así:
App.Router.map(function() {
this.resource("posts", { path: "/" }, function() {
this.route("new", { path: "/new" });
});
this.route("another", { path: "/another" });
});
Esto resultaría en la creación / uso de las siguientes rutas:
- PostsRoute, PostsController, PostsView
- PostsIndexRoute, PostsIndexController, PostsIndexView
- PublicacionesNuevoRuta, PublicacionesNuevoControlador, PublicacionesNuevoVer
- AnotherRoute, AnotherController, AnotherView
Como vemos en este ejemplo, el recurso afecta el nombre de los Controladores, Rutas y Vistas que se utilizan / crean (La "nueva" ruta se trata como subordinada al recurso "Publicaciones"). Cite de la fuente original (la modifiqué, porque era irritante, como Patrick M señaló correctamente en los comentarios):
Esto significa que cada vez que crea un recurso, se creará un espacio de nombres completamente nuevo. Ese espacio de nombres lleva el nombre del recurso y todas las rutas secundarias se insertarán en él.
Actualización: ejemplo más complejo con recursos anidados
Considere el siguiente ejemplo más complejo con varios recursos anidados:
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" });
});
En este caso, el recurso comments
crea un nuevo espacio de nombres. Esto significa que las rutas resultantes en este caso serán las siguientes. Como puede ver, la ruta, el controlador y la vista para el recurso de comentarios no tienen como prefijo el nombre de la ruta principal. Eso significa que anidar un recurso dentro de otro recurso restablece el espacio de nombres (= crea un nuevo espacio de nombres).
- PostsRoute, PostsController, PostsView
- PostsIndexRoute, PostsIndexController, PostsIndexView
- PublicacionesNuevoRuta, PublicacionesNuevoControlador, PublicacionesNuevoVer
- ComentariosRoute, CommentsController, CommentsView
- ComentariosNewRoute, ComentariosNewController, ComentariosNewView
- AnotherRoute, AnotherController, AnotherView
Este comportamiento también se explica en Ember Docs .
That namespace will have an " which [...]
. ¿Qué"
significa? ¿Es solo un marcador de posición para Ruta | Controlador | ¿Ver?App.Router.map(function() { this.route("posts", { path: "/" }, function() { this.route("new"); this.route("comments"}, function() { this.route("new"); }); }); this.route("another", { path: "/another" }); });