回答:
1.11.0以降で
this.route
は、の代わりにのみ使用されることに注意してくださいthis.resource
。出典:http : //guides.emberjs.com/v1.11.0/routing/defining-your-routes/ *
詳細な説明については、この投稿をご覧ください。
これはこの投稿の大まかな要約です(私は少し変更しました):
リソースとルートへの変更以来、多くの人が2つの意味とそれらがネーミングにどのように影響するかについて混乱しています。ここに違いがあります:
- リソース-モノ(モデル)
- ルート-事に関係する何か
つまり、ルートとリソースを使用するルーターは次のようになります。
App.Router.map(function() {
this.resource("posts", { path: "/" }, function() {
this.route("new", { path: "/new" });
});
this.route("another", { path: "/another" });
});
これにより、次のルートが作成/使用されます。
この例からわかるように、リソースは、使用/作成されているコントローラー、ルート、およびビューの命名に影響します(「新しい」ルートは「投稿」リソースの下位として扱われます)。元のソースからの引用(パトリックMがコメントで正しく指摘したのでイライラしていたので、変更しました):
つまり、リソースを作成するたびに、新しい名前空間が作成されます。その名前空間はリソースにちなんで名付けられ、すべての子ルートがそれに挿入されます。
更新:ネストされたリソースを持つより複雑な例
複数のネストされたリソースを持つ次のより複雑な例を考えてみます。
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
は新しい名前空間を作成します。つまり、この場合のルートは次のようになります。ご覧のとおり、コメントリソースのルート、コントローラー、ビューには、親ルートの名前がプレフィックスとして付けられていません。つまり、リソースを別のリソース内にネストすると、ネームスペースがリセットされます(=新しいネームスペースが作成されます)。
この動作は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" }); });