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] });