Может ли шаблон jquery иметь цикл for - PullRequest
3 голосов
/ 11 марта 2012

Мне нужно создать шаблон jQuery, в котором есть выпадающий список месяца и день выпадающего списка месяца. Мне кажется излишним включать в каждый из элементов моей модели JSON значения от 1 до 31, включающие список месяцев и список дней, чтобы можно было создавать параметры с синтаксисом {{each}}.

Я видел, как вы можете добавить динамический массив внутри {{each}} в другом ответе: Могу ли я объявить локальные / временные переменные в шаблоне jQuery?

Вероятно, я могу просто определить внутри него массив со значениями от 1 до 31. Но даже это немного многословно. Есть ли лучший способ сделать цикл for в шаблонах jquery?

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

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

1 Ответ

13 голосов
/ 13 марта 2012

Я нашел, как добавить еще один тег в шаблоны jquery.Вот для определения тега.Добавьте это после того, как ваши скрипты ссылаются на jquery и jquery.tmpl.js:

(function ($) {
$.extend(jQuery.tmpl.tag, {
    "for": {
        _default: {$2: "var i=1;i<=1;i++"},
        open: 'for ($2){',
        close: '};'
    }
});
})(jQuery);

Спасибо за образец тега textarea от Roel Kramers: http://blog.sterkwebwerk.nl/2010/12/15/custom-jquery-template-tags-1/

.Источник tmpl для определения каждого тега очень помог.

По умолчанию используется цикл for с 1 итерацией.Вот как вы определяете тело шаблона для его использования:

<script id="TestTemplate" type="text/x-jQuery-tmpl">
    Day:<br/>
    <select name="DayOfMonth">
        {{for(i=1;i<=31;i++)}}
        <option value="${i}">${i}</option>
        {{/for }}
    </select>
</script>​

Вот страница jsFiddle, чтобы увидеть его в действии: http://jsfiddle.net/mjlang/qvzdV/

...