<編集日="2013 年 3 月 11 日">
このリポジトリを GitHub にプッシュしました。renderTemplate
これは、あなたが説明している方法を多少使用する概念的なアプリです。
</編集>
子ルートでは、renderTemplate
フックを使用して、アプリケーションに特定のテンプレートを特定の .xml でレンダリングするように指示します{{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
テンプレートにレンダリングするように設定されています。このテンプレートは 1 つしかないため(以下のハンドルバーを参照)、何も指定する必要はありません。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...]