Шаблоны jquery повторяются по значению, а не по количеству ключей - PullRequest
0 голосов
/ 22 сентября 2011

Использование плагина шаблона jquery довольно просто, но я столкнулся с проблемой, которую довольно просто объяснить.

Я бы хотел перебрать свой шаблон на основе значения одного ключа, который я получил;

например, num_lines: 15

{{each (var i = 0; i < ${num_lines}; i++)}}
poet
{{/each}}

Хотя логика в порядке, она не справляется с задачей. Есть идеи, где я не прав? Спасибо.

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

{{each}} ожидает некоторый сбор.Вам нужно будет собрать коллекцию из своего счета, чтобы использовать ее.

Вы можете просто создать вспомогательную функцию для вашего шаблона и передать ее в параметре параметров.Вот пример шаблона * jQuery jsFiddle, который использует удобную для пользователя пользовательскую функцию .Вы просто даете ему слово, которое хотите повторить, и сколько раз и {{each}} сделает работу за вас.

Шаблон

<script id="itemTemplate" type="text/x-jquery-tmpl">
    <ul>
    {{each(i, prop) $item.makeArrayForEach("poet", $data.someInteger)}}
        <li>${prop}</li>
    {{/each}}
    </ul>
</script>

JavaScript

var makeArrayForEach = function (word, size) {
    var i, result = [];
    for (i = 0; i < size; i++) {
        result.push(word);
    }
    return result;
};

$("#itemTemplate").tmpl(yourObject, {
    makeArrayForEach: makeArrayForEach
}).appendTo($(".results"));
0 голосов
/ 22 сентября 2011

Я не думаю, что каждый предназначен для использования таким образом. единственное, о чем я могу думать, это делать:

JavaScript:

 var poet = [{
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"},
         {Poet:"poet"}
    }];

HTML:

{{each Poet}}
       ${$value}
{{/each}}
...