在我的工作场景中,我在js渲染模板中使用以下代码片段:
{{:#data['" + columnName + "']}}
,这将返回值:
[object Object],[object Object]
如何使用for循环在js渲染模板中从此数组对象[object Object],[object Object]
获取特定属性?
答案 0 :(得分:2)
您可以使用{{for}}
迭代数组。像这样:
<ul>
{{for columnName}}
<li>{{:Property}}</li>
{{/for}}
</ul>
在循环内部,基础范围自动成为数组中的特定对象,因此您可以使用{{:Property}}
直接输出任何对象的属性。
答案 1 :(得分:1)
有关迭代数组 ,请参阅http://www.jsviews.com/#fortag。 (页面下方显示使用标记循环数组)。
另外,有关您的模板示例的一些评论:
看起来您正在使用生成的模板,并插入了columnName
参数的值。因此,如果columnName
的值为"fooColumn"
,则您的模板代码为{{:#data['fooColumn']}}
- 实际上等同于{{:#data.fooColumn}}
,可以进一步简化为{{:fooColumn}}
。
(我假设columnName
的值是一个有效的JavasScript名称 - 不是像"foo column"
那样的值,比如说,带有空格 - 在这种情况下你的语法确实合适。)
现在,如果#data.fooColumn
是一个对象数组,每个对象都有'itemProperty'
属性,那么使用{{for}}
迭代数组就像这样(David Ward的例子略有改动) ):
<ul>
{{for fooColumn}}
<li>{{:itemProperty}}</li>
{{/for}}
</ul>
使用columnName生成的形式将是
"<ul>{{for " + columnName + "}}<li>{{:itemProperty}}</li>{{/for}}</ul>"
答案 2 :(得分:1)
我举例说明了jsrender for loop和props是如何工作的。
StudentList具有学生详细信息的数组,并在学生列表上迭代循环
你必须使用{{for StudentList}}{{/for}}
。
现在每个学生都有三个属性,因此遍历属性,您可以使用{{props}}{{/props}}
标记并使用{{>key}}
和{{>prop}}
Doc:https://www.jsviews.com/#propstag
JSON数据:
<!-- language: lang-json -->
"StudentList": [
{
"RollNo": 1,
"Name": "John Doe",
"Subject": "Maths"
},
{
"RollNo": 2,
"Name": "Jane Doe",
"Subject": "Physics"
},
...
渲染模板:
<!-- language: lang-html -->
{{for StudentList}}
<tr>
{{props #data}}
<td>{{>key}}</td><td>{{>prop}}</td>
{{/props}}
</tr>
{{/for}}