我有服务器发给我的数据。
如果没有数据项,我不希望容器<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}}
答案 0 :(得分: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);
});