Handlebars - 从另一个对象/arrA[object.num].value 获取带有索引号的数组值
Handlebars - getting value of array with an index-number from another object / arrA[object.num].value
编辑
感谢 76484!
我在这里添加了更多内容以使问题更清楚。
我想在我的把手中访问“handlungsstrang[karte[x].strang].farbe”并更改 div.
的背景颜色
“handlungsstrang”(1,2,3) 的每个“Karte”(1 - x) 应该具有相同的颜色。
我用以下方式呈现网页:
res.render("index", {
myDoc: myInit.myDoc,
});
myDoc(来自 file.json - 看起来像这样(缩短):
{
"projektTitel": "Plotter Test",
"filename": "editDoc.json",
<….>
"dramturgiefarbe": "#00FFFF",
"handlungsstrang": [
{"name": "A-Strang", "beschreibung": "Heldin ermittelt den Mörder", "farbe": "#34C534", "initProzent": 50, "symbol": "A", "rausgeschoben": "false"},
{"name": "B-Strang", "beschreibung": "Heldin ermittelt den Mörder", "farbe": "#666666", "initProzent": 30, "symbol": "B", "rausgeschoben": "false"}
],
"minidisplay": {
"sichtbar": true
},
"karte": [ {
"uuid": "0",
"farbe": "#34C534",
"strang": 0,
"band": 1,
"isAnmerkungsKarte": 0
},
{
"uuid": "2",
"farbe": "#CEE960",
"strang": 1,
"band": 1,
"isAnmerkungsKarte": 0
}
{
"uuid": "3",
"farbe": "#CEE960",
"strang": 3,
"band": 1,
"isAnmerkungsKarte": 0
}
]
}
这在 fiddle 中有效 - 感谢 76484!
{{#each karte}}
{{lookup (lookup ../handlungsstrang strang) 'farbe'}}
{{/each}}
这不在我的网站上:
<div class="papierkorbbereich">
{{#each myDoc.karte}}
{{@index}}
>{{lookup (lookup ../handlungsstrang strang) 'farbe'}}<
{{/each}}
</div>
结果:1><2><3>< …
真气人。我做错了什么...?
解决方案
我已将解决方案包含在此处,以防有人正在寻找它并希望获得快速答复。这是对我有用的:
handlungsstrang[ karte[x].strang].farbe // 带把手:
=> {{查找(查找@root/myDoc/handlungsstrang strang)'farbe'}}
{{#each myDoc.karte}}
{{lookup (lookup @root/myDoc/handlungsstrang strang) 'farbe'}}
{{/each}}
因为您没有格式化示例中的代码(您的 Handlebars 模板甚至不包含任何把手,{}
!),所以帮助您变得更具挑战性。
但是,正如我在评论中提到的,您应该使用 lookup 助手来查找对象的值。
您的用例将需要两次查找:首先根据每个 Card
的 strangNo
(大概)提供的索引从 Strang
数组中查找项目。其次,您需要在返回的 Strang
上查找 color
属性。 Handlebars 允许您使用 subexpressions.
嵌套查找
您的模板变为:
{{#each Card}}
{{lookup (lookup ../Strang strangNo) 'color'}}
{{/each}}
不需要助手。
我创建了一个fiddle供您参考。
编辑
感谢 76484!
我在这里添加了更多内容以使问题更清楚。
我想在我的把手中访问“handlungsstrang[karte[x].strang].farbe”并更改 div.
的背景颜色“handlungsstrang”(1,2,3) 的每个“Karte”(1 - x) 应该具有相同的颜色。
我用以下方式呈现网页:
res.render("index", {
myDoc: myInit.myDoc,
});
myDoc(来自 file.json - 看起来像这样(缩短):
{
"projektTitel": "Plotter Test",
"filename": "editDoc.json",
<….>
"dramturgiefarbe": "#00FFFF",
"handlungsstrang": [
{"name": "A-Strang", "beschreibung": "Heldin ermittelt den Mörder", "farbe": "#34C534", "initProzent": 50, "symbol": "A", "rausgeschoben": "false"},
{"name": "B-Strang", "beschreibung": "Heldin ermittelt den Mörder", "farbe": "#666666", "initProzent": 30, "symbol": "B", "rausgeschoben": "false"}
],
"minidisplay": {
"sichtbar": true
},
"karte": [ {
"uuid": "0",
"farbe": "#34C534",
"strang": 0,
"band": 1,
"isAnmerkungsKarte": 0
},
{
"uuid": "2",
"farbe": "#CEE960",
"strang": 1,
"band": 1,
"isAnmerkungsKarte": 0
}
{
"uuid": "3",
"farbe": "#CEE960",
"strang": 3,
"band": 1,
"isAnmerkungsKarte": 0
}
]
}
这在 fiddle 中有效 - 感谢 76484!
{{#each karte}}
{{lookup (lookup ../handlungsstrang strang) 'farbe'}}
{{/each}}
这不在我的网站上:
<div class="papierkorbbereich">
{{#each myDoc.karte}}
{{@index}}
>{{lookup (lookup ../handlungsstrang strang) 'farbe'}}<
{{/each}}
</div>
结果:1><2><3>< …
真气人。我做错了什么...?
解决方案
我已将解决方案包含在此处,以防有人正在寻找它并希望获得快速答复。这是对我有用的:
handlungsstrang[ karte[x].strang].farbe // 带把手: => {{查找(查找@root/myDoc/handlungsstrang strang)'farbe'}}
{{#each myDoc.karte}}
{{lookup (lookup @root/myDoc/handlungsstrang strang) 'farbe'}}
{{/each}}
因为您没有格式化示例中的代码(您的 Handlebars 模板甚至不包含任何把手,{}
!),所以帮助您变得更具挑战性。
但是,正如我在评论中提到的,您应该使用 lookup 助手来查找对象的值。
您的用例将需要两次查找:首先根据每个 Card
的 strangNo
(大概)提供的索引从 Strang
数组中查找项目。其次,您需要在返回的 Strang
上查找 color
属性。 Handlebars 允许您使用 subexpressions.
您的模板变为:
{{#each Card}}
{{lookup (lookup ../Strang strangNo) 'color'}}
{{/each}}
不需要助手。
我创建了一个fiddle供您参考。