使用每个迭代传入的数据

时间:2011-12-06 06:31:48

标签: jquery-templates jquery

如果数组直接传递给jquery模板(没有它是对象的属性),我该如何迭代它呢?

例如:

var hired=[{name:'Jack'}, {name:'Jack'}, {name:'Jack'}]

这是传递给下面模板的数据:

Template Start
<div> 

<table> 

{{each $data}}

<tr>
    <td width="250" align="left">${$value.name}</th>
    <td width="150" align="center">${$value.name}</th>
    <td width="60" align="center">${$value.name}</th>
</tr>
{{/each}}

</table>

</div>

Template End

由于没有属性名称来引用传入的数据,我尝试使用$ data但它不起作用。我怎样才能在这里访问数组?

非常感谢。

2 个答案:

答案 0 :(得分:2)

如果将数组传递给tmpl,它会自动将模板应用于每个元素。这不是你想要的吗?

var hired = [{name:'Jack'}, {name:'Jack'}, {name:'Jack'}];

使用模板:

<script id="hired-template" type="text/x-jquery-tmpl">
    <tr>
        <!-- I think you originally closed these with 'th' by mistake. -->
        <td width="250" align="left">${name}</td>
        <td width="150" align="center">${name}</td>
        <td width="60" align="center">${name}</td>
    </tr>
</script>

<table id="hired-table"></table>

这应该允许你这样做:

$('#hired-template').tmpl(hired).appendTo('#hired-table');

得到:

<table id="hired-table">
    <tr>
        <td width="250" align="left">Jack</td>
        <td width="150" align="center">Jack</td>
        <td width="60" align="center">Jack</td>
    </tr>
    <tr>
        <td width="250" align="left">Jack</td>
        <td width="150" align="center">Jack</td>
        <td width="60" align="center">Jack</td>
    </tr>
    <tr>
        <td width="250" align="left">Jack</td>
        <td width="150" align="center">Jack</td>
        <td width="60" align="center">Jack</td>
    </tr>
</table>

当然,我不确定你是否打算让“杰克”共出现九次;但这似乎是你的代码在它工作时会做的事情。

答案 1 :(得分:1)

HTML:

<table id="tableID">
</table>

的javascript:

var hired=[{name:'Jack'}, {name:'Jimmy'}, {name:'Ron'}]

    for( var i=0; i < hired.length; i++ ) {
        $( "#tableID" ).append(
          "<tr> \
            <td width=\"250\" align=\"left\">" + hired[ i ].name + "</td> \
            <td width=\"150\" align=\"center\"> " + hired[ i ].name + " </td> \
            <td width=\"60\" align=\"center\"> " + hired[ i ].name + " </td> \
           </tr>"
        );
    };

如果您无法理解,请告诉我。