javascript - 使用循环索引访问 Handlebars 数组

标签 javascript arrays handlebars.js

我正在使用 handlebars.js 迭代 categories,然后使用当前数组索引访问 series 数组中的元素。我可以使用下面的助手来做到这一点。

var json={
    "categories": [{
            "id": 3,
            "name": "category 0"
        }, {
            "id": 6,
            "name": "category 1"
        }
    ],
    "series": [{
            "id": 1,
            "name": "DUMMY",
            "data": [{
                    "id": 5,
                    "name": "series 0 data 0"
                }, {
                    "id": 10,
                    "name": "series 0 data 1"
                }
            ]
        }
    ]
}

Handlebars.registerHelper('getArrayValues', function(ar, index, prop) {
    return ar[0].data[index][prop];
});

var template = Handlebars.compile(json);

{{#each categories}}
<p>id: {{this.id}}</p>
<p>name: {{this.name}}</p>
<p>series id with helper: {{getArrayValues ../series @index 'id' }}</p>
<p>series name with helper: {{getArrayValues ../series @index 'name' }}</p>
{{/each}}

我可以在没有 helper 的情况下这样做吗?以下是我的尝试。我也尝试过使用 lookup,但似乎能够访问 lookup 返回的属性。

{{#each categories}}
<p>id: {{this.id}}</p>
<p>name: {{this.name}}</p>
<p>series id: {{../series.[0].data.[@index].id}}</p>
<p>series name: {{../series.[0].data.[@index].name}}</p>
{{/each}}

最佳答案

我为此创建了一个解决方案,我不知道它有多好,但它运行良好

试试这个:)

{{#each categories}}
  <p>id: {{this.id}}</p>
  <p>name: {{this.name}}</p>
  <p>series id with helper:{{#with (lookup  ../series.[0].data 
  @index) }}{{this.id}}{{/with}}</p>
  <p>series name with helper: {{#with (lookup  ../series.[0].data 
  @index) }}{{this.name}}{{/with}}</p>
{{/each}}

关于javascript - 使用循环索引访问 Handlebars 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49616221/

相关文章:

javascript - Handlebars ,访问每个循环变量的父级

javascript - 如何使用javascript自动循环浏览页面?

javascript - jQuery PJAX 插件不能在 HTML 网站上运行?

ruby 将定界字符串数组转换为散列

c# - 如何定义具有预定义容量的列表数组?

java - 如何缩短井字游戏中的 if 语句以检查行等?

ember.js - 自定义 Handlebars block 助手

Javascript:从数组中查找最长的名称

javascript - 引用嵌套的 JavaScript 对象

javascript - Ember.js 将 'each' 变量传递到组件中