如何在jsrender中找到传递的数组的长度?

Aru*_*han 3 arrays jsrender

我有一个数组传递给 jsRender,如下所示:

var myArray = [{name: Arun},
               {name: Mohan},
               {name: Deepak}
              ]
Run Code Online (Sandbox Code Playgroud)

现在我将其传递给我创建的渲染模板。但在其中,我需要对数组的前 2 个元素应用 for 循环,以便我可以将其样式设置为与第三个元素不同的样式。如何在 jsrender for 循环中找到上述数组的长度?

Bor*_*ore 6

从 a 内部,{{for someArray}}您可以使用以下方法获取数组的长度{{:#get("array").data.length}}

{{for someArray}}
  {{:name}} (array length: {{:#get("array").data.length}}...)
{{/for}} 
Run Code Online (Sandbox Code Playgroud)

或者,您可以将数组作为上下文模板参数传递,并使用{{:~array.length}}如下:

{{for someArray ~array=someArray}}
  {{:name}} (array length: {{:~array.length}}...)
{{/for}} 
Run Code Online (Sandbox Code Playgroud)

要以不同方式格式化数组中的某些项目,您可以简单地使用{{if ...}},如下所示:

{{for someArray}}
  {{if #index<2}} ... {{else}} ... {{/if}}
{{/for}} 
Run Code Online (Sandbox Code Playgroud)

或者您可能想创建一个自定义{{range}}标签或类似的标签来迭代索引的子集,如http://www.jsviews.com/#samples/jsr/tags/extend-forhttp://www. jsviews.com/#samples/tag-controls/range