Использование каждого для перебора переданных данных - PullRequest
0 голосов
/ 06 декабря 2011

Если массив передается в шаблон jquery напрямую (не являясь свойством объекта), как мне выполнить его итерацию?

ex:

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 ]

2 голосов
/ 06 декабря 2011

Если вы передадите массив в 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 голос
/ 06 декабря 2011

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>"
        );
    };

дайте мне знать, если вы не можете что-то понять.

...