如何仅从我的 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
可能吗?
顺便问一下,{{props #data}}
中的#data
是什么意思(我正在使用它,但不明白它!)?
如果我只想选择一个组,我可以这样做吗 - {{props #data.ID2}}
??
最佳答案
#data
是当前数据项(或数据上下文,如果您愿意的话)。
请参阅http://www.jsviews.com/#assigntag获取说明这一点的示例。
事实上,#data
是 #view.data
的缩写,而 #view
是当前的“ 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}}
关于jquery - jsrender/jsviews : how to loop a selected object list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20900963/