Зверніть увагу, що з 1.11.0 і далі this.route
використовується лише замість this.resource
. Джерело: http://guides.emberjs.com/v1.11.0/routing/defining-your-routes/ *
Погляньте на цю публікацію для детального пояснення.
Це приблизний підсумок цієї публікації (я трохи змінив):
З моменту зміни ресурсу та маршруту багато людей плутають сенс двох та те, як вони впливають на називання. Ось різниця:
- ресурс - річ (модель)
- маршрут - щось стосується речі
Отже, це означає, що маршрутизатор, що використовує маршрут і ресурс, може виглядати так:
App.Router.map(function() {
this.resource("posts", { path: "/" }, function() {
this.route("new", { path: "/new" });
});
this.route("another", { path: "/another" });
});
Це призведе до створення / використання таких маршрутів:
- PostsRoute, PostsController, PostsView
- PostsIndexRoute, PostsIndexController, PostsIndexView
- PostsNewRoute, PostsNewController, PostsNewView
- AnotherRoute, AnotherController, AnotherView
Як ми бачимо з цього прикладу, ресурс впливає на іменування контролерів, маршрутів і представлень, які використовуються / створюються ("новий" маршрут трактується як підпорядкований ресурсу "повідомлення"). Цитуйте з першоджерела (я змінив його, тому що це дратувало, як Патрік М правильно вказав у коментарях):
Це означає, що коли ви створюєте ресурс, він створює абсолютно новий простір імен. Цей простір імен названий іменем ресурсу, і всі дочірні маршрути будуть вставлені в нього.
Оновлення: складніший приклад із вкладеними ресурсами
Розглянемо наступний більш складний приклад з кількома вкладеними ресурсами:
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" });
});
У цьому випадку ресурс comments
створює абсолютно новий простір імен. Це означає, що отримані маршрути в цьому випадку будуть наступними. Як ви бачите Маршрут, Контролер та Перегляд ресурсу коментарів, не мають префіксу назви батьківського маршруту. Це означає, що вкладення ресурсу в інший ресурс скидає простір імен (= створює новий простір імен).
- PostsRoute, PostsController, PostsView
- PostsIndexRoute, PostsIndexController, PostsIndexView
- PostsNewRoute, PostsNewController, PostsNewView
- CommentsRoute, CommentsController, CommentsView
- КоментаріNewRoute, CommentsNewController, CommentsNewView
- AnotherRoute, AnotherController, AnotherView
Така поведінка пояснюється також у документах Ембер .