我目前正在使用Handlebars来动态填充某些面板。在其中一个中,我觉得有必要重复给定的任务。
// Add a looping helper for Handlebars
Handlebars.registerHelper('repeat', function(nFrom, nTo, oBlock) {
var sResult = '';
for (var i=nFrom; i < nTo+1; i++)
sResult += oBlock.fn(i);
return sResult;
});
{{#if oSomeObject}}
<ul>
{{# repeat 1 2}}
<li>{{../oSomeObject.aSomeProperty[{{this}}]</li> <!-- Does not work (because of nested curlies) -->
<li>{{../oSomeObject.aSomeProperty[this]}}</li> <!-- Does not work -->
{{/repeat}}
</ul>
{{/if}}
我是否有任何已知的方法可以在我的repeat
块中访问我的数组内容?
答案 0 :(得分:1)
我会这样做:
Handlebars.registerHelper('myHelper', function(object, nFrom, nTo, oBlock){
var sResult = '';
for(var i=nFrom; i<nTo+1; i++)
sResult += oBlock.fn(object[i]);
return sResult;
});
或者,如果你想迭代oSomeObject
的全部
Handlebars.registerHelper('myHelper', function(object, oBlock){
var sResult = '';
for(var i=0; i<object.length; i++)
sResult += oBlock.fn(object[i]);
return sResult;
});
然后你可以用:
来调用它{{#myHelper oSomeObject}}
<li>{{aSomeProperty}}</li>
{{/myHelper}}
这实际上与把手的each
块帮助器相同,所以你可以使用:
{{#each oSomeObject}}
<li>{{aSomeProperty}}</li>
{{/each}}