0

我有服务器交给我的数据。

<p>如果没有数据项,我不希望容器存在。但是可能有几个数据项或 1 个数据项,如果有的话我需要一个<p>包装器。

理想情况下,我正在寻找某种#ifor可以接受任意数量参数的助手。这可能吗?

{{#ifor firstname||lastname||nickname||age}}
<p>
  {{#if firstname}}
    <span class="firtname">{{firstname}}</span>
  {{/if}}

  {{#if lastname}}
    {{lastname}}
  {{/if}}

  {{#if age}}
   Age: {{age}}
  {{/if}}

  {{#if nickname}}
    - ( {{type}} )
  {{/if}}
</p>
{{/if}}
4

1 回答 1

1

一个简单的解决方案是编写一个帮助程序来接受您希望测试的属性,而不使用 OR 运算符。然后迭代参数并检查它们是否匹配真值测试:

Handlebars.registerHelper('ifor', function() {
    var l, opts;

    opts = Array.prototype.pop.call(arguments);
    for (l = arguments.length-1; l>=0; l--) {
        // test against undefined if you prefer
        //if (typeof(arguments[l])!=='undefined')

        if (arguments[l])
            return opts.fn(this);
    }

    return opts.inverse(this);
});

还有一个小提琴http://jsfiddle.net/G5Vhc/1/

于 2013-08-13T15:34:39.863 回答