在车把,说我有一个集合names
我该怎么办
{{#each names}}
{{position}}
{{name}}
{{/each}}
其中{{位置}}为1头名,2为第二名称等。难道我非得存储位置集合中的一个关键?
在车把,说我有一个集合names
我该怎么办
{{#each names}}
{{position}}
{{name}}
{{/each}}
其中{{位置}}为1头名,2为第二名称等。难道我非得存储位置集合中的一个关键?
您可以使用内置的把手@index符号做到这一点:
{{#each array}}
{{@index}}: {{this}}
{{/each}}
@index会给给定阵列中的每个项的(基于零的)指数。
请注意,使用的手把你必须使用符号@@指数,以避免编译错误的Razor视图引擎的人。
欲了解更多内置的助手看到http://handlebarsjs.com/
Handlebars.registerHelper("counter", function (index){
return index + 1;
});
用法:
{{#each names}}
{{counter @index}}
{{name}}
{{/each}}
虽然你不能做到这一点与任何本地把手帮手,你可以创建自己的。 您可以拨打Handlebars.registerHelper()
它传递一个字符串,你想匹配(位置)的名称,这将返回当前位置计数功能。 你可以保持在调用闭合的轨道位置数registerHelper
。 下面是如何注册一个帮手被调用的例子position
应该与你的模板实例工作。
JavaScript的:
// Using a self-invoking function just to illustrate the closure
(function() {
// Start at 1, name this unique to anything in this closure
var positionCounter = 1;
Handlebars.registerHelper('position', function() {
return positionCounter++;
});
// Compile/render your template here
// It will use the helper whenever it seems position
})();
这里是一个的jsfiddle证明: http://jsfiddle.net/willslab/T5uKW/1/
虽然佣工在记录handlebarsjs.com ,这花了一些努力,我要弄清楚如何使用它们。 感谢您的挑战,我希望帮助!
只有你必须使用{{@index}}
例:
{{#.}}
<li class="order{{@index}}"> counter: {{@index}}</li>
{{/.}}
这是我的首选解决方案。 注册扩展的背景下,以自动包括您的位置属性的辅助工具。 然后,只需使用新的块帮手(前。#iter),而不是#each。
Handlebars.registerHelper('iter', function (context, options) {
var ret = "";
for (var i = 0, j = context.length; i < j; i++) {
ret += options.fn($.extend(context[i], {position: i + 1}));
}
return ret;
});
用法:
{{#iter names}}
{{position}}
{{name}}
{{/iter}}
改编自http://rockycode.com/blog/handlebars-loop-index/
你可以从列表内指数获得价值。
{{#each list}}
@index
{{/each}}