我在模板中渲染内容时遇到了一些困难。
这似乎是一件容易的事,但我无论如何都做不到。
有些人可以帮助我吗?
ApplicationView
<script type="text/x-handlebars" id="application">
<header class="logo"><!-- ... --></header>
<nav><!-- ... --></nav>
<hr class="top" />
{{outlet}}
<hr class="bottom" />
<footer><!-- ... --><div class="clear"></div>
</footer>
</script>
我有路线:
this.resource('exibition', {path: '/exposicoes/:exibition_id'}, function() {
this.route('artist', {path: '/artistas/:artist_id'});
});
然后,链接exposicoes/2
会在application outlet
上显示id = 2的展示页面,对吗?
ExbitionView:
<script type="text/x-handlebars" id="exibition">
<div class="exibitions">
<h1>{{#link-to 'exibition'}}{{title}}{{/link-to}}</h1>
<div class="left">
<h2>Apresentação</h2>
{{{text}}}
</div>
<div class="right"><h2>Artistas</h2>
<ul>
{{#each artist in artists}}
<li>{{#link-to 'exibition.artist' artist}}{{artist.name}}{{/link-to}}</li>
{{/each}}
</ul>
</div>
<div class="clear"></div>
</div>
</script>
如何让ExbitionView
中的艺术家链接在{{{text}}}
取代内容的同一区域中打开?
我尝试使用插座,有些像:
<div class="left">
<h2>Apresentação</h2>
{{outlet showhere}}
</div>
在渲染ExbitionView时,使用renderTemplate(以及disconnectOutlet
清除)填充它,但是如果用户使用后退按钮或甚至页面上的链接从/exibitions/2/artists/2
返回/exibitions/2
内容不再显示。
答案 0 :(得分:1)
你非常接近正确的方法。
如您所知,请将您的{{text}}
车把标签替换为插座,如下所示:
<div class="left">
<h2>Apresentação</h2>
{{outlet}}
</div>
然后,添加一个显式索引模板:
<script type="text/x-handlebars" data-template-name="exhibition/index">
{{text}}
</script>
与匹配的ExhibitionIndexRoute
类一起处理为此路线设置模型(包含文本数据)。
现在你有了一个插座,你的artists
路线将正确地渲染到此插座并替换{{text}}
,而ExhibitionIndexRoute
将正确地重新填充数据按钮。