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

Pat*_*eld 17 javascript templating meteor

我不得不在任何地方定义模板助手,只是用常量测试文档属性的相等性,所以我可以在我的模板中做这样的事情:

    {{#if fruitIsPineapple}}...{{/if}}
Run Code Online (Sandbox Code Playgroud)

在我的模板中,助手看起来像:

    Template.example.helpers({
      fruitIsPineapple: function () { return this.document.fruit === 'pineapple'; } 
    });
Run Code Online (Sandbox Code Playgroud)

如何避免创建所有这些助手?如果我们在Blaze中有一个相等运算符,那就太好了......

Pat*_*eld 48

我在Meteor Devshop回答了我的问题.事实证明你可以定义一个Handlebars助手,如下所示:

    Template.registerHelper('equals', function (a, b) {
      return a === b;
    });
Run Code Online (Sandbox Code Playgroud)

然后在前缀位置使用它,如下所示:

    {{#if equals fruit 'pineapple'}}...{{/if}}
Run Code Online (Sandbox Code Playgroud)

  • 现在不应该是`Template.registerHelper`吗?,P (5认同)

jas*_*koh 16

没有任何繁琐的代码,您可以通过安装raix:handlebar-helpers来实现这一点,并执行以下操作:

{{#if $eq a b}}
   ...
{{ /if }}
Run Code Online (Sandbox Code Playgroud)