Шаблон Jquery не работает с каждым - PullRequest
1 голос
/ 24 февраля 2011

Мой исходный код здесь:

http://jsfiddle.net/2pkHL/

Я не могу понять, почему он не отображается правильно. Кроме того, есть ли способ без вложения данных в другой объект?

<script id='myTemplate' type='text/x-jquery-tmpl'>

Table of stuffs:

<table>
{{each value}}
<tr>
    <td>${name}</td>
    <td>${value}</td>
</tr>
{{/each}}

</table>


</script>


<div id="target">

</div>



var something = function () { };

var results = [{ name: 'First', value: 1 }, { name: 'Second', value: 2 }];

something.value = results;

$('#myTemplate').tmpl(something).appendTo('#target');

Ответы [ 2 ]

3 голосов
/ 24 февраля 2011

Вам нужны только эти две строки:

var results = [{ name: 'First', value: 1 }, { name: 'Second', value: 2 }];
$('#myTemplate').tmpl({value: results}).appendTo('#target');

Я использую простой объект вместо функции.Смотрите демонстрацию: http://jsfiddle.net/2pkHL/6/.


Вы можете сделать вещи еще проще.Поскольку данные затрагивают только строки (не <table>), вы можете включить в шаблон только строки, предоставить массив непосредственно в качестве данных, и tmpl автоматически сгенерирует HTML для каждого элемента в массиве:

<script id='myTemplate' type='text/x-jquery-tmpl'>
<tr>
    <td>${name}</td>
    <td>${value}</td>
</tr>
</script>

Table of stuffs:
<table id="target">
</table>

Js:

var results = [{ name: 'First', value: 1 }, { name: 'Second', value: 2 }];
$('#myTemplate').tmpl(results).appendTo('#target');

См. Эту версию здесь: http://jsfiddle.net/2pkHL/11/

1 голос
/ 24 февраля 2011

Ну, ваша главная проблема в том, что вы говорите, что var что-то - это функция.Если вы сделаете это объектом, вы готовы идти!:)

Вот обновленная скрипка;http://jsfiddle.net/2pkHL/5/

И, конечно же, обновленный vode здесь:

<script id='myTemplate' type='text/x-jquery-tmpl'>
Table of stuffs:
<table>
{{each value}}
<tr>
    <td>${name}</td>
    <td>${value}</td>
</tr>
{{/each}}
</table>
</script>
<div id="target">
</div>

И JS:

var something = {};

var results = [{ name: 'First', value: 1 }, { name: 'Second', value: 2 }];

something.value = results;

$('#myTemplate').tmpl(something).appendTo('#target');
...