0

为我的英语道歉,

我有一个这样的路由器:

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'

如果做一个:

{{#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

这是正确的方法吗??

提前致谢

4

1 回答 1

1

是的,这是正确的方法。查看路由器指南的这一部分。如果你嵌套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.

于 2013-09-02T11:32:46.353 回答