0

我在使用#each 和#if helper 时遇到问题。首先我在http://handlebarsjs.com/block_helpers.html中寻找解决方案,但我什么也没找到。例如:有对象:

{
人们:
 [{
    名称:“A”,
    年龄:16,
    性别:“男孩”
  },{
    名称:“B”,
    年龄:14,
    性别:“男孩”
  },{
    名称:“C”,
    年龄:18,
    性别:“男孩”
 }]
};

在 html 中(伪代码,我想要,但我不知道如何完成它们。)

    {{#每个民族}}
            {{#如果年龄等于 16}}
                {{name}}可以开车
            {{/如果}}
            {{#如果年龄小于 16}}
                {{name}}不能开车
            {{/如果}}
            {{#如果年龄大于 16}}
                {{name}} 可以做任何事
            {{/如果}}
    {{/每个}}

或者

    {{#每个民族}}
            {{#if 相等(name,"A")}}
                {{name}}可以开车
            {{/如果}}
            {{#如果相等(名称,“B”)}
                {{name}}不能开车
            {{/如果}}
            {{#if 相等(name,"c")}}
                {{name}} 可以做任何事
            {{/如果}}
    {{/每个}}

感谢您的输入。

4

3 回答 3

1

您需要使用自定义表达式助手。

Handlebars.registerHelper('getDriveStatus', function(age, name) {
  if (age == 16) {
    return name + " can drive"
  }

  if (age < 16) {
    return name + " can't drive";
  }

  if (age > 16) {
    return name + " can't do anything";
  }
});

进而,

{{#each peoples}}
        {{getDriveStatus age name}}
{{/each}}

字符条件也是如此。

于 2013-03-01T09:46:25.820 回答
1

您可以在 Template.YourTemplate.helpers({}) 部分中创建一个辅助函数:

    Template.YourTemplate.helpers({
        'canDrive' : function(name, age){
        if (age == 16) { return name + " can drive" }
            if (age < 16) { return name + " can't drive"; }
            if (age > 16) { return name + " can't do anything"; }
     },
    })

在您的模板中,您可以像这样使用它:

    {{#each peoples}}
        {{canDrive name age}}
    {{/each}}
于 2013-03-01T10:25:28.750 回答
1

谢谢@Prashant 和@Oscar,我得到了问题的解决方案。他们的回复很有帮助。如果您有同样的问题,请尝试做他们。并且有没有 Handlebars.registerHelper 的解决方案:

在 html 中:

    
       {{#每个民族}}
            {{#if equal name "A"}}{{age}}{{sex}}{{/if}}
       {{/每个}}
    

在客户端:


    Template.test.equal = 函数 (a,b) {
      返回 a===b;
    };

于 2013-03-02T05:21:04.633 回答