Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比较空格{{{#if}}块中的模板帮助器值_Javascript_Templates_Meteor_Meteor Blaze_Spacebars - Fatal编程技术网

Javascript 比较空格{{{#if}}块中的模板帮助器值

Javascript 比较空格{{{#if}}块中的模板帮助器值,javascript,templates,meteor,meteor-blaze,spacebars,Javascript,Templates,Meteor,Meteor Blaze,Spacebars,我需要比较嵌套模板中的两个模板帮助器值。我想知道是否有一种简单的方法可以比较{{{if}}语句中的两个模板帮助程序(一个来自父模板),如下所示: {{#each bids}} {{#if bid.price===../job.price}} <span>some text</span> {{else}} <span>some other text</span> {{/if}} {{/each}} {{{#每个出价} {

我需要比较嵌套模板中的两个模板帮助器值。我想知道是否有一种简单的方法可以比较{{{if}}语句中的两个模板帮助程序(一个来自父模板),如下所示:

{{#each bids}}
  {{#if bid.price===../job.price}}
    <span>some text</span>
  {{else}}
    <span>some other text</span>
  {{/if}}
{{/each}}
{{{#每个出价}
{{{如果bid.price==../job.price}
一些文本
{{else}
其他一些文本
{{/if}
{{/每个}}

如果不能这样做,我想另一个选择是在每个块内的新模板中使用Template.parentData?我并不反对这样做,只是如果可能的话,我上面概述的方法会更快、更简单。谢谢。

我相信你是对的,空格键在
\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}}
{{{#每个出价}
{{{#ifx“bid.price==../job.price”}
一些文本
{{else}
其他一些文本
{{/ifx}
{{/每个}}

唯一的缺点是,您需要将条件写成字符串,而
eval
并不十分优雅。但是,嘿,它是有效的。

像这样的东西可能适合你:

Template.registerHelper(''函数(){
返回_
})
{{{#每个出价}
{{{如果{.isEqual bid.price../job.price}}
一些文本
{{else}
其他一些文本
{{/if}
{{/每个}}

作为奖励,您不仅可以获得
.isEqual
,还可以获得所有的..*函数。

因此,我最终通过运行bids.forEach(函数(bid){bid.match=bid.price==Template.currentData().job.price;})让代码正常工作;在我的bids助手中,有效地将匹配条件添加到bids助手中。我仍然想知道空格键是否能处理比较逻辑。从我搜索的所有内容来看,它看起来不像是。你也可以注册一个equals函数
模板。registerHelper('equals',函数(a,b){return a==b;})
,但我更喜欢Peppe L-G注册下划线的想法。同意,它更优雅、更灵活。raix:handlebar helpers也有类似的用途