Route
とResource
の違いを理解しようとしています。私がResource
を理解する方法は、Route
オブジェクトのサブパスを別のRoute
オブジェクトに設定するのに役立ちます。しかし、デフォルトの名前マッピングがパスに対しても発生すると考えると、それは不明です。
1.11.0以降では、
this.route
の代わりにthis.resource
のみが使用されることに注意してください。ソース: http://guides.emberjs.com/v1.11.0/routing/defining-your-routes/ *
詳細な説明については、これをご覧ください post .
これはこの投稿の大まかな要約です(少し変更しました):
リソースとルートが変更されて以来、多くの人々はこの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 でも説明されています。