Meteor:在Blaze中测试两个值(如{{#if someVar == 'someVal'}})的相等性的最佳方法是什么?

18

我不得不在各处定义模板帮助程序,仅测试文档属性与常量的相等性,以便我可以在我的模板中执行以下操作:

    {{#if fruitIsPineapple}}...{{/if}}

我的模板帮助程序看起来像:

    Template.example.helpers({
      fruitIsPineapple: function () { return this.document.fruit === 'pineapple'; } 
    });

我该如何避免创建所有这些帮助函数?如果Blaze中有一个等式运算符,那就太好了...

我怎样才能避免创建所有这些帮助函数?如果 Blaze 中有一个相等性运算符的话,那将会很不错…

一个定义了许多方便的辅助函数的包,其中包括一个用于测试相等性的函数:https://github.com/raix/Meteor-handlebar-helpers - Patrick Canfield
为什么有人踩了这个问题?我也有同样的疑问,而且答案在任何地方都没有记录。 - foobarbecue
2个回答

50

我在Meteor Devshop得到了我的问题的答案。原来你可以定义一个Handlebars helper,就像这样:

    Template.registerHelper('equals', function (a, b) {
      return a === b;
    });

然后像这样将其用作前缀位置:

    {{#if equals fruit 'pineapple'}}...{{/if}}

现在不是必须使用UI.registerHelper吗? - Christian Fritz
是的,@ChristianFritz。谢谢。 - Patrick Canfield
5
现在不应该是使用Template.registerHelper吗?;P - Peppe L-G
抱歉,我把计数器从其{{equal up_counter 42}}状态中打破了。\o> - dtrckd

16

你可以安装raix:handlebar-helpers,然后像这样做,就可以轻松实现,而无需任何复杂的代码:

{{#if $eq a b}}
   ...
{{ /if }}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接