我的代码:http://jsbin.com/axaqix/20/edit
我的路由器:
WebApp.Router.map(function () {
this.resource('sites', { path: '/' } , function() {
this.resource('site', { path: '/sites/:site_id'} , function() {
this.resource('posts', { path: 'posts' });
});
this.route('new', {path: 'new'});
});
});
我的模板:
<!--Main Page-->
<script type="text/x-handlebars" data-template-name="sites">
<ul>
{{#each site in controller}}
<li>
{{#linkTo 'site' site}} {{site.siteName}} {{/linkTo}}<br>
{{#linkTo 'posts' site}} go to posts {{/linkTo}}
</li>
{{/each}}
</ul>
{{#linkTo 'sites.new'}} ADD NEW WEBSITE {{/linkTo}}
{{outlet}}
<!--Displays site details-->
<script type="text/x-handlebars" data-template-name="site">
<p>Site Details</p>
Name: {{siteName}} <br>
Secret Key:{{secretKey}} <br>
Public Key:{{publicKey}} <br>
</script>
<!--Inseting new WEBSITE template-->
<script type="text/x-handlebars" data-template-name="sites/new">
<p>Add New WEBSITE</p>
<div>
{{view Ember.TextField placeholder="Insert new site name"
valueBinding="newName" action="addSite"}}
</div>
</script>
<script type="text/x-handlebars" data-template-name="posts">
<p>Damn</p>
</script>
我有两个问题:
1.为什么当我按go to posts
行时,它不会呈现posts
模板?相反,它正在渲染
site
模板。
posts
模板覆盖sites
模板?注意:有两个模板site
和sites
。
答案 0 :(得分:5)
- 为什么当我按下去帖子行时它不会呈现帖子模板?相反,它正在渲染网站模板。
醇>
您将帖子路由呈现为站点路由的childRoute。因此,当您转换到帖子时,转换将类似于“sites.site.posts”。因此,首先呈现父模板,然后是子项。
- 是否可以制作帖子模板覆盖网站模板?
醇>
是的,您可以在网站模板中将您的商店命名为{{outlet test}}
并将网站和帖子模板呈现为
WebApp.PostsRoute = Ember.Route.extend({
renderTemplate: function() {
this.render('posts',{
into: 'sites',
outlet: 'test'
});
}
});
<强>更新强>
甚至无需为您的商店命名。您只需将网站呈现并将模板发布到网站模板中
即可WebApp.PostsRoute = Ember.Route.extend({
renderTemplate: function() {
this.render('posts',{into: 'sites'});
}
});