Микро шаблонизатор John Resigs, вопрос о том, как обрабатывать выборки? - PullRequest
1 голос
/ 23 февраля 2009

У меня есть шаблон, который выглядит так:

<script type="text/html" id="TemplateEdit">

    <td>
        <input type="hidden" value="<#= item.ID #>" id="Edit.ID" name="Edit.ID" />
        <select id="Edit_ClientID" name="Edit.ClientID">
            <option value="1">test</option>
            <option value="2">test 2</option>
            <option value="3">test 3</option>
        </select>
    </td>
    <td>
        <select id="Edit_Frequency" name="Edit.Frequency">
            <option value="1">Daily</option>
            <option value="2">Weekly</option>
            <option value="3">Fortnightly</option>
        </select>
    </td>
</script>         

В передаваемом мной объекте item есть некоторые свойства, такие как item.ClientID и item.Frequency.

И общая функция обрабатывает всасывание в шаблон и внедрение его:

var template = tmpl(editTemplate, { item: data }); // this runs jresig's template code
domEle.append(template); //append the results in

Теоретически, после запуска этого кода я мог бы сделать что-то вроде:

$("#Edit_ClientID").val(data.ClientID);

Однако я не хочу обременять эту шаблонную функцию кодом, специфичным для этого шаблонного упражнения. Эта конкретная функция обрабатывает шаблоны для всего сайта, и мне нужно сделать ее общей.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2009

Вы можете написать обычный javascript там, поэтому, если я правильно понимаю ваш вопрос, вы можете просто сделать что-то вроде этого:

<script type="text/html" id="TemplateEdit">

    <td>
        <input type="hidden" value="<#= item.ID #>" id="Edit.ID" name="Edit.ID" />
        <select id="Edit_ClientID" name="Edit.ClientID">
            <option value="1" <# if(data.ClientID == 1){ #> selected <# } #>>test</option>
            <option value="2"<# if(data.ClientID == 2){ #> selected <# } #>>test 2</option>
            <option value="3"<# if(data.ClientID == 3){ #> selected <# } #>>test 3</option>
        </select>
    </td>
    <td>
        <select id="Edit_Frequency" name="Edit.Frequency">
            <option value="1">Daily</option>
            <option value="2">Weekly</option>
            <option value="3">Fortnightly</option>
        </select>
    </td>
</script>

Для исполняемого JavaScript, используйте <# #>, а не <# = #>

0 голосов
/ 23 февраля 2009

Почему бы не передать весь список в качестве параметра шаблона? Не обязательно самый элегантный ... но это позволит избежать добавления условной логики к шаблону (т. Е. "Является ли этот элемент текущим выбранным элементом? Да выводит" выбранный ", ничего не выводит).

...