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 に答える