(这个问题与这个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 data 需要以下控制器:
- 配置文件索引控制器
- 配置文件用户控制器
- ProfileUserEditController
- 简介公司控制器
- ProfileCompanyEditController
以下路线:
- ProfileRoute
- ProfileIndexRoute
- ProfileUserRoute
- ProfileUserEditRoute
- 简介公司路线
- 简介公司编辑路线
以及以下模板:
- 指数
- 轮廓
- 简介/索引
- 个人资料/用户
- 个人资料/用户编辑
- 简介/公司
- 简介/公司编辑
但我无法解决嵌套的资源配置文件/产品。我期待控制器位于:
- 简介产品控制器
- 简介产品索引控制器
- 简介产品展示控制器
路线在:
- 简介产品索引路线
- 公司简介产品展示路线
模板位于:
- 简介/产品
- 简介/产品/索引
相反,通过 ember 的链接#/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 如何处理嵌套资源。这是在哪里记录的?(专门针对嵌套资源!)