Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每个车把的柜台_Javascript_Templates_Handlebars.js_Template Engine - Fatal编程技术网

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}}