<编辑日期="2013 年 3 月 11 日">
我已经在 GitHub 中推送了这个存储库。这是一个概念应用程序,它使用renderTemplate
了您所描述的方式。
</编辑>
在您的子路由中,使用renderTemplate
钩子来告诉您的应用程序在特定的{{outlet}}
. 例子:
源小提琴
App.Router.map(function() {
this.resource('matches', { path: 'matches' }, function() {
this.route('match', { path: 'match/:match_id' });
});
});
App.MatchesRoute = Em.Route.extend({
model: function() {
return App.Match.find();
},
setupController: function(controller, model) {
model = App.Match.find();
controller.set('content', model);
},
renderTemplate: function() {
this.render('matches', {
into: 'application'
})
}
});
App.MatchesMatchRoute = Em.Route.extend({
model: function(params) {
return App.Match.find(params.match_id);
},
setupController: function(controller, model) {
controller.set('content', model);
},
renderTemplate: function() {
this.render('match', {
into: 'application'
})
}
});
这是设置为将其模板 ( )MatchesMatchRoute
呈现到模板中。而且由于这个模板只有一个(见下面的把手),我们不必指定任何东西:matches/match
application
{{outelet}}
<script type="text/x-handlebars">
<h1>App</h1>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="matches">
<h2>Matches</h2>
<ul>
{{#each match in controller}}
<li>
{{#linkTo matches.match match}}
{{match.title}}
{{/linkTo}}
</li>
{{/each}}
</ul>
</script>
<script type="text/x-handlebars" data-template-name="match">
<h3>{{title}}</h3>
<p>{{description}}</p>
</script>
如果您有多个插座的场景,则必须对它们进行限制,如下面的车把:
<script type="text/x-handlebars">
<h1>App</h1>
{{outlet main}}<br />
{{outlet nested}}
</script>
然后你的路线也必须指定出口。例子:
源小提琴
[...route code...]
renderTemplate: function() {
this.render('content', {
into: 'application',
outlet: 'main'
});
this.render('buttons', {
into: 'application',
outlet: 'nested'
});
}
[...route code...]