for jsrender模板中的循环

时间:2014-01-09 05:14:25

标签: javascript jquery html jsrender

在我的工作场景中,我在js渲染模板中使用以下代码片段:

{{:#data['" + columnName + "']}} 

,这将返回值:

[object Object],[object Object]

如何使用for循环在js渲染模板中从此数组对象[object Object],[object Object]获取特定属性?

3 个答案:

答案 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}}