las*_*igh 4 handlebars.js meteor
在meteor.com上的基本排行榜示例中,有一个名为selected_name的方法.
Template.leaderboard.selected_name = function () {
var player = Players.findOne(Session.get("selected_player"));
return player && player.name;
};
{{#if selected_name}}
<div class="details">
<div class="name">{{selected_name}}</div>
<input type="button" class="inc" value="Give 5 points" />
</div>
{{/if}}
Run Code Online (Sandbox Code Playgroud)
相反,我想返回整个玩家对象,然后通过把手将该对象视为上下文.我希望我能这样说:
Template.leaderboard.selected_person = function () {
var player = Players.findOne(Session.get("selected_player"));
return player || false;
};
{{#if selected_person}}
<div class="details">
<div class="name">{{name}}</div>
<input type="button" class="inc" value="Give 5 points" />
</div>
{{/if}}
Run Code Online (Sandbox Code Playgroud)
上面的#if块实际上不适用于流星.#if语句只是在评估selected_person方法,而嵌套的{{name}}绝对没有.我想知道是否可以编写一个方法,以便返回的对象可以用作#if块的上下文.
解决了!如果我只使用#with而不是#if,那么一切都很好.正如它在车把文件中说的那样You can shift the context for a section of a template by using the built-in with block helper.
{{#if selected_person}}
{{#with selected_person}}
<div class="details">
<div class="name">{{name}}</div>
<input type="button" class="inc" value="Give 5 points" />
</div>
{{/with}}
{{/if}}
Run Code Online (Sandbox Code Playgroud)
嵌套的if/with非常麻烦,显然不值得只渲染名称,但我可以想到,对单个对象的更多属性进行特殊渲染会很有用.
| 归档时间: |
|
| 查看次数: |
1409 次 |
| 最近记录: |