我有一个看起来像这样的模板:
<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);
但是我不想用这个模板练习特有的代码来加重这个模板功能。这个特殊的函数处理整个站点的模板,我需要保持它的通用性。
有什么想法吗?
答案 0 :(得分: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,请使用&lt; ##&gt;而不是&lt;#=#&gt;
答案 1 :(得分:0)
为什么不通过&lt; Options&gt;的整个列表?作为模板参数?不一定是最优雅的......但是它会避免在模板中添加条件逻辑(即“这个项目是当前选择的项目吗?是输出”选中“,没有输出)。