如何将Handlebars isEq helper转换为Meteor中的Spacebars?

时间:2014-04-26 09:21:00

标签: meteor handlebars.js meteor-blaze spacebars

我已经在我的Meteor项目车把助手:

Handlebars.registerHelper('isEq', function(v1, v2, options){
    if(v1 === v2){
        return options.fn(this);
    }else{
        return options.inverse(this);
    }
});

但是在更新到0.8并从把手切换到空格键之后它再也无法工作 - 我在其他stackoverflow主题中发现现在我应该将Handlebars.registerHelper更改为UI.registerHelper但它仍然无法正常工作 - 任何人都知道如何正确地为空格键实现这个?

3 个答案:

答案 0 :(得分:6)

我使用UI.registerHelper添加eq函数,该函数可与{{#if}}中的Spacebars一起使用。

在JavaScript代码中,我注册了一个eq两个变量的函数,我可以从Spacebars(在Meteor v0.8中替换了Handlebars的系统)调用该函数

UI.registerHelper('eq', function(v1, v2, options) {
  if(v1 == v2){
    return true
  } else {
    return false
  }
});

在HTML中,我写道:

{{#if eq 1 2}}
They are equal.
{{else}}
They're not equal
{{/if}}

答案 1 :(得分:3)

您想像以下一样使用它吗?

{{#isEq 7 8}}
    They're equal!
{{else}}
    They're not equal :(
{{/isEq}}

从0.8开始,块帮助器被定义为模板。见https://github.com/meteor/meteor/tree/devel/packages/spacebars#custom-block-helpers

我认为您需要使用关键字参数({{#isEq v1=7 v2=8}})来调用它。虽然,您应该能够将isEq定义为帮助程序,然后使用#if块帮助程序,如{{#if isEq 7 8}}

答案 2 :(得分:2)

这就是我在Meteor 1.3 +中实现的方式

// JavaScript
Template.registerHelper('odd', function(conditional, options) {
  return conditional % 2;
});

<!-- HTMLS -->
{{#each myCollection}}
{{#if (odd @index)}}
  even
{{else}}
  odd
{{/if}}
{{/each}}