Javascript 每个车把的柜台
在车把中,假设我有一组Javascript 每个车把的柜台,javascript,templates,handlebars.js,template-engine,Javascript,Templates,Handlebars.js,Template Engine,在车把中,假设我有一组名称我该怎么办 {{#each names}} {{position}} {{name}} {{/each}} 其中{position}}是1表示第一个名字,2表示第二个名字等。我是否一定要将位置存储为集合中的一个键?虽然您不能使用任何本机Handlebar助手执行此操作,但您可以创建自己的。您可以调用handlebar.registerHelper(),向其传递一个包含要匹配的名称(位置)的字符串和一个返回当前位置计数的函数。您可以在调用registerHelper的闭
名称
我该怎么办
{{#each names}}
{{position}}
{{name}}
{{/each}}
其中{position}}是1表示第一个名字,2表示第二个名字等。我是否一定要将位置存储为集合中的一个键?虽然您不能使用任何本机Handlebar助手执行此操作,但您可以创建自己的。您可以调用
handlebar.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
})();
下面是一个要演示的JSFIDLE:
虽然帮助程序在上有文档记录,但我花了一些精力才弄明白如何使用它们。感谢您的挑战,我希望这会有所帮助 您可以使用内置把手@索引符号执行此操作:
{{#each array}}
{{@index}}: {{this}}
{{/each}}
@索引将给出给定数组中每个项的(从零开始的)索引
请注意,对于在Razor视图引擎中使用手柄的用户,必须使用表示法@索引以避免编译错误
有关更多内置帮助程序,请参见仅您必须使用{{@index}} 例如:
{{#.}}
<li class="order{{@index}}"> counter: {{@index}}</li>
{{/.}}
{{}
计数器:{{@index}}
{{/.}}
这是我首选的解决方案。注册一个辅助对象,该辅助对象将扩展上下文以自动包含位置属性。然后只需使用新的块辅助对象(例如iter)而不是每个
改编自
用法:
{{#each names}}
{{counter @index}}
{{name}}
{{/each}}
您可以仅从列表中的索引获取值
{{#each list}}
@index
{{/each}}
这对我有用
{{#each posts}}
<tr>
<td>{{@index}} </td>
<td>{{name}}</td>
</tr>
{{/each}}
{{{#每个帖子}
{{@index}}
{{name}}
{{/每个}}
当前方法
自Handlebar API V2以来,它们已经包含了一个@编号
它基本上是迭代器的索引,从1开始
所以,这就是你本可以做的
{{#foreach names}}
{{@number}}
{{name}}
{{/foreach}}
参考:尝试在同一分区中多次添加位置/block@algorithmicCoder我觉得这个答案不错。对你有用吗?为清楚起见,如果是,请接受。谢谢这将显示“0”作为名字,但OP希望它显示“1”。serg的答案注册了一个帮助器以提供更完整的解决方案。可以从0开始工作。如何获取列表的长度?用例是什么?如果您只想在列表上迭代,则每个函数都将执行该操作,或者如果您想基于长度应用其他操作,则只需注册一个帮助器函数并从中返回列表的长度。如果您有其他问题,我无法理解,或者您有任何其他疑问,请告诉我。
{{#each list}}
@index
{{/each}}
{{#each posts}}
<tr>
<td>{{@index}} </td>
<td>{{name}}</td>
</tr>
{{/each}}
{{#foreach names}}
{{@number}}
{{name}}
{{/foreach}}