如何仅从我的json数据循环选定的组/对象列表?例如,我只想在下面的示例中循环“ID2”,
JSON,
{
"ID1": {
"items":{
"0": "VALUE1",
"1": "VALUE2",
"2": "VALUE3",
"4": "VALUE4"
}
},
"ID2": {
"items": {
"0": "VAL2-1",
"1": "VAL2-2",
"2": "VAL2-3"
}
}
}
JS,
myTmpl2 = $.templates("#myTmpl2");
$("#result2").html(
myTmpl2.render(data2)
);
模板,
<script id="myTmpl2" type="text/x-jsrender">
{{props #data}}
<tr>
<td>{{:key}}</td>
{{for prop}}
{{props items}}
<td>{{>key}} - {{>prop}}</td>
{{/props}}
{{/for}}
</tr>
{{/props}}
</script>
结果,
ID1 0 - VALUE1 1 - VALUE2 2 - VALUE3 4 - VALUE4
ID2 0 - VAL2-1 1 - VAL2-2 2 - VAL2-3
我追求的结果,
结果,
ID2 0 - VAL2-1 1 - VAL2-2 2 - VAL2-3
有可能吗?
和btw,#data
在{{props #data}}
中的意思是什么(我正在使用但不明白!)?
{{props #data.ID2}}
??
答案 0 :(得分:5)
#data
是当前数据项(或数据上下文,如果您愿意)。
有关说明此问题的示例,请参阅http://www.jsviews.com/#assigntag。
事实上,#data
是#view.data
的缩写,#view
是当前的“视图”。请参阅此示例,例如:http://www.jsviews.com/#samples/jsr/paths。
foo.bar
等数据路径从当前数据项开始,因此#data.foo.bar
和foo.bar
是等效的。
在上面的示例中,您可以直接转到ID2
对象,写一下:
<tr>
<td>ID2</td>
{{props ID2.items}}
<td>{{>key}} - {{>prop}}</td>
{{/props}}
</tr>
其他变体:
{{for ID2}}
<tr>
<td>ID2</td>
{{props items}}
<td>{{>key}} - {{>prop}}</td>
{{/props}}
</tr>
{{/for}}
或:
{{props #data}}
{{if key === "ID2"}}
<tr>
<td>{{:key}}</td>
{{for prop}}
{{props items}}
<td>{{>key}} - {{>prop}}</td>
{{/props}}
{{/for}}
</tr>
{{/if}}
{{/props}}