4

我有以下路由设置:

this.resource('blog',function(){
    this.resource('selectimage',{path:"selectimage/:returncontext"},function(){});
});

this.resource('post',{path:":post_id"},function(){
    this.resource('selectimage',{path:"selectimage/:returncontext"},function(){});
});

我所期望的是,当导航到 blog.selectimage 和 post.selectimage 时,将使用相同的路由器、控制器和视图。不幸的是,似乎最后一个条目获胜。

导航到 selectimage 时,是否可以在不离开父上下文(帖子/博客)的情况下实现这一点(显然我可以从 base-selectimages-classes 继承,但我希望有一些通用的 ember 方式来做到这一点。 )

4

1 回答 1

5

由于 Ember 更多地依赖命名约定,因此两条不同的路由不能具有相同的资源名称。但是 Ember 提供了重用相同控制器和模板的方法

将您在 post 下的 selectimage 重命名为其他名称

this.resource('post',{path:":post_id"},function(){
   this.resource('xxx',{path:"xxx/:returncontext"});
});

在路由器中,您可以指定必须重用的templateNameand 。controller像这样的东西应该使它可重复使用

App.xxxRoute = Em.Route.extend({
  controllerName: 'selectimage',
  templateName: 'selectimage'
});

示例演示

于 2013-11-14T10:45:29.690 回答