0

我有一个带有一个模板的网站:

<script type="text/x-handlebars">
mainsite 
    {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="mainpage"> 
    mainpage
    {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="subpage"> 
    subpage
</script>

{{#linkTo 'mainpage.subpage'}}{{/linkTo}}

所以我想要完成的是那个人输入地址 /mainpage 它会看到“mainsite mainpage”,当他输入 /mainpage/subpage 时,他会看到“mainsite mainpage subpage”。

所以基本上我想将一个子页面放入主页面模板中,并将其合并到主模板中(这是上面列表中的第一个)。

我试过了:

this.resource('mainpage', function() {
    this.route('subpage', { path: '/subpage' });
  });

但是,如果我单击由 linkTo 地址创建的链接设置为主页/子页面(所以这没关系),但我看到“主页主页”但没有看到“主页主页子页面”。

我做错了什么?如何解决?

4

1 回答 1

2

我刚刚写了一篇关于路由和渲染视图的教程来回答这个问题: http: //matthewlehner.net/ember-js-routing-and-views/

但是,更具体地说,这个问题,这里的问题是定义routeresource. 有两种方法可以快速解决您的问题:

更改路线类型

this.resource('mainpage', function() {
  this.resource('subpage', { path: '/subpage' });
});

更改模板名称

data-template-name="mainpage/subpage"

发生这种情况是因为向资源添加“子页面”路由会向该资源添加另一个操作。在您原来的情况下,它将寻找一个data-template-name="mainpage/subpage".

想想这两条路线 'users/new' 和 'users/1/comments' 之间的区别——第一个应该只为用户呈现一个新操作,但第二个是一个嵌套资源,您假设它会显示来自的评论特定的用户。使用 Ember,您将创建这两条不同的路线,如下所示:

this.resource('users', function () {
  this.route('new'); #renders the 'users/new' template
  this.resource('comments'); #renders the 'comments' template
});

作为额外的奖励,路线名称应该可以正常工作。至少从 1.0rc6 开始,他们会这样做。

于 2013-07-28T01:02:04.597 回答