Javascript 将变量用作#每个对象的一部分的把手

Javascript 将变量用作#每个对象的一部分的把手,javascript,handlebars.js,Javascript,Handlebars.js,我有一个对象,有几个关键点,我需要循环通过。根据页面的不同,密钥可能会改变,我不知道如何访问它。我并不总是知道品牌价值,所以我需要一种动态的方式来找回它 {{each object.[@root.brand]}} {{@key}}: {{this}} {{/each}} 变量应返回如下值: {{each object.[logitech]}} {{@key}}: {{this}} {{/each}} 我尝试过像[(lookup@root.brand)]和[(lookup../

我有一个对象,有几个关键点,我需要循环通过。根据页面的不同,密钥可能会改变,我不知道如何访问它。我并不总是知道品牌价值,所以我需要一种动态的方式来找回它

{{each object.[@root.brand]}}
    {{@key}}: {{this}}
{{/each}}
变量应返回如下值:

{{each object.[logitech]}}
    {{@key}}: {{this}}
{{/each}}
我尝试过像
[(lookup@root.brand)]
[(lookup../@root.brand)]
这样的查找方法,但到目前为止运气都不好

我能够运行附加条件;但这不是理想的解决方案,因为我不知道随着时间的推移,这个循环会有多大

{{each object}}
    {{#compare @key "==" @root.brand}}
        {{@key}}: {{this}}
    {{/compare}}
{{/each}}
我认为这是正确的方法,但你没有正确地使用它<代码>查找采用两个参数,第一个是要在其上执行查找的对象,第二个是键。看起来你只传递了钥匙

我认为最好的方法是在根数据对象中添加一个
brands
对象,只是为了清楚地知道我们要在哪个对象上执行查找。生成的数据对象可能如下所示:

{
  "brandId": "logitech",
  "brands": {
    "logitech": {
      "keyOne": "Logitech, Value 1",
      "keyTwo": "Logitech, Value 2",
      "keyThree": "Logitech, Value 3"
    },
    "other": {
      "keyOne": "Brand 2, Value 1",
      "keyTwo": "Brand2, Value 2",
      "keyThree": "Brand2, Value 3"
    }
  }
}
这样,每次调用模板时,都会为值
brandId
添加要在
brands
对象中查找的键。模板变为:

{{#each (lookup brands @root.brandId)}}
    {{@key}}: {{this}}
{{/each}}
我已经创建了一个供您参考的

我觉得我应该在这里补充一点,在您调用模板的地方,如果您可以访问
brands
对象和所需的
brandId
,那么您可以在代码中进行查找并将结果传递给模板。比如:

template({ brands[brandId] });