(この質問はこのjsbinに関連しています)
次のルーター構成があります。
App.Router.map(function() {
this.resource('profile', function () {
this.route('user');
this.route('userEdit');
this.route('company');
this.route('companyEdit');
this.resource('products', function () {
this.route('index');
this.route('show', { path: '/:product_id/show' });
});
});
});
これにより、ember データは次のコントローラーを想定します。
- ProfileIndexController
- ProfileUserController
- ProfileUserEditController
- プロフィール会社コントローラー
- ProfileCompanyEditController
次のルート:
- プロフィールルート
- プロファイル インデックス ルート
- プロファイル ユーザー ルート
- ProfileUserEditRoute
- プロフィール会社名ルート
- プロフィール会社編集ルート
そして、次のテンプレート:
- 索引
- プロフィール
- プロファイル/インデックス
- プロフィール/ユーザー
- プロフィール/ユーザー編集
- プロフィール/会社
- プロフィール/会社編集
しかし、ネストされたリソース プロファイル/製品に対処できません。私はコントローラーを次の場所に期待していました:
- プロファイル製品コントローラ
- ProfileProductsIndexController
- プロファイル製品表示コントローラ
ルート:
- プロフィール商品紹介ルート
- プロフィール製品表示ルート
テンプレートは次の場所にあります。
- プロフィール/製品
- プロフィール/製品/インデックス
代わりに、へのリンクをたどること#/profile/products/index
で、ember は次のオブジェクトを生成しています。
generated -> route:products Object {fullName: "route:products"}
generated -> route:products.index Object {fullName: "route:products.index"}
generated -> controller:products Object {fullName: "controller:products"}
Could not find "products" template or view. Nothing will be rendered Object {fullName: "template:products"}
generated -> controller:products.index Object {fullName: "controller:products.index"}
Could not find "products.index" template or view. Nothing will be rendered Object {fullName: "template:products.index"}
Transitioned into 'profile.products.index
これは予想外でした: 製品はプロファイル内にネストされています! もちろん、コントローラー/ルート/テンプレートを変更することもできますが、何が起こっているのかを理解したいと思います. 私が見ている問題は、最上位の「製品」がネストされた「プロファイル/製品」と競合することです。
オブジェクト名 (ルート/ビュー/テンプレート/コントローラー) の生成に関して、ember はネストされたリソースをどのように処理しますか。これはどこに文書化されていますか? (特にネストされたリソースの場合!)