1

我有一个看起来像这样的模板:

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

但是,我不想给这个模板函数添加特定于这个模板练习的代码。这个特定的函数处理整个站点的模板,我需要保持它的通用性。

有任何想法吗?

4

2 回答 2

2

你可以在那里写普通的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,请使用 <# #>,而不是 <#= #>

于 2009-02-24T00:15:30.640 回答
0

为什么不将整个 <Options> 列表作为模板参数传递?不一定是最优雅的......但它会避免向模板添加条件逻辑(即“这个项目是当前选定的项目吗?是的输出“选择”,没有输出什么)。

于 2009-02-23T08:28:54.660 回答