Ember Router - 多级资源

时间:2013-09-02 11:24:39

标签: ember.js

我的英语的Apollogies,

我有这样的路由器:

App.Router.map ()->
@resource 'movies' , ->
  @route 'free'
  @route 'featured'
  @route 'index'
  @route 'movie', path: '/:movie'

@resource 'seasons' , ->
  @route 'free'
  @resource 'featured', ->
    @route 'season', path : '/:season'
  @route 'index'
  @route 'season', path: '/:season'

在这种特殊情况下:

@resource 'seasons' , ->
  @route 'free'
  @resource 'featured', ->
    @route 'season', path : '/:season'

如果做a:

{{#linkTo "seasons.featured.season" 25}} ....

Ember引发了一个例外。我必须这样做:

{{#linkTo "featured.season" 25}} .... // this way is ok    

与模板相同。我必须走上正轨:

/templates/featured/seasson.hbs  // ok

而不是我认为应该是正确的道路:

/templates/seasons/featured/seasson.hbs // worng

这是正确的方法吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

是的,这是正确的方法。看看这个part of the router guide。如果您嵌套resources,路线的路径是"重置"。

以下示例来自指南:

App.Router.map(function() {
  this.resource('post', { path: '/post/:post_id' }, function() {
    this.route('edit');
    this.resource('comments', function() {
      this.route('new');
    });
  });
});

您可以链接新路线以获取以下评论:

{{#linkTo "comments.new"}}

因此,模板必须命名为comments/new

但如果您愿意,可以保留命名空间,这也在指南中说明:

App.Router.map(function() {
  this.resource('foo', function() {
    this.resource('foo.bar', { path: '/bar' }, function() {
      this.route('baz'); // This will be foo.bar.baz
    });
  });
}); 

现在baz的完整路线名称为foo.bar.baz,模板必须放在foo/bar/baz