我需要比较位于嵌套模板中的两个模板助手值。我想知道是否有一种简单的方法来比较{{#if}}语句中的两个模板助手(一个来自父模板),如下所示:
{{#each bids}}
{{#if bid.price===../job.price}}
<span>some text</span>
{{else}}
<span>some other text</span>
{{/if}}
{{/each}}
如果你不能这样做,我想另一种选择是在每个块内的新模板中使用Template.parentData?我并不反对这一点,如果可能的话,我上面概述的方式会更快更简单。感谢。
答案 0 :(得分:11)
这样的事可能适合你:
Template.registerHelper('_', function(){
return _
})
{{#each bids}}
{{#if _.isEqual bid.price ../job.price}}
<span>some text</span>
{{else}}
<span>some other text</span>
{{/if}}
{{/each}}
作为奖励,您不仅可以获得_.isEqual
,还可以获得所有_。*功能。
答案 1 :(得分:0)
我相信你是对的,空格键不支持#if
条件下的逻辑语句。但是您可以轻松定义一个新的块助手:
HandlebarsRegister.registerHelper('ifx', function(conditional, options) {
var truthValue = false;
try {
truthValue = eval(conditional);
} catch (e) {
console.log("Exception in #ifx evaluation of condition: ",
conditional, e);
}
if (truthValue) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
然后使用
{{#each bids}}
{{#ifx "bid.price===../job.price"}}
<span>some text</span>
{{else}}
<span>some other text</span>
{{/ifx}}
{{/each}}
唯一的缺点是你需要把你的条件写成一个字符串而eval
并不完全优雅。但是,嘿,它有效。