【发布时间】:2013-02-05 01:59:03
【问题描述】:
我想了解Route 和Resource 之间的区别。我理解Resource 的方式有助于将Route 对象的子路径设置为另一个Route 对象。但是当我想到路径也发生默认名称映射时,它还不清楚。
【问题讨论】:
标签: ember.js ember-router
我想了解Route 和Resource 之间的区别。我理解Resource 的方式有助于将Route 对象的子路径设置为另一个Route 对象。但是当我想到路径也发生默认名称映射时,它还不清楚。
【问题讨论】:
标签: ember.js ember-router
请注意,从 1.11.0 开始,
this.route仅用于代替this.resource。来源:http://guides.emberjs.com/v1.11.0/routing/defining-your-routes/*
请查看此post 以获得详细说明。
这是对这篇文章的粗略总结(我做了一点修改):
自从改变资源和路线后,很多人 对两者的含义以及它们如何影响命名感到困惑。 区别如下:
- 资源 - 事物(模型)
- 路线 - 与事物有关的事情
这意味着使用路由和资源的路由器可能如下所示:
App.Router.map(function() {
this.resource("posts", { path: "/" }, function() {
this.route("new", { path: "/new" });
});
this.route("another", { path: "/another" });
});
这将导致创建/使用以下路由:
正如我们从这个例子中看到的,资源会影响正在使用/创建的控制器、路由和视图的命名(“新”路由被视为从属于“帖子”资源)。引用原始来源(我对其进行了修改,因为正如 Patrick M 在 cmets 中正确指出的那样,这很烦人):
这意味着每当您创建资源时,它都会创建一个全新的资源 命名空间。该命名空间以 资源和所有子路由都将插入其中。
更新:更复杂的嵌套资源示例
考虑以下具有多个嵌套资源的更复杂示例:
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 创建了一个全新的命名空间。这意味着在这种情况下生成的路由将如下所示。 如您所见,cmets 资源的 Route、Controller 和 View 没有以父路由的名称为前缀。这意味着将资源嵌套在另一个资源中会重置命名空间(= 创建一个新的命名空间) .
Ember Docs 中也解释了此行为。
【讨论】:
That namespace will have an " which [...]。 " 是什么意思?它只是 Route 的占位符吗?控制器 |查看?
App.Router.map(function() { this.route("posts", { path: "/" }, function() { this.route("new"); this.route("comments"}, function() { this.route("new"); }); }); this.route("another", { path: "/another" }); });