代码之家  ›  专栏  ›  技术社区  ›  ChadT

John Resigs微型模板引擎,如何处理选择问题?

  •  1
  • ChadT  · 技术社区  · 16 年前

    我有一个这样的模板:

    <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 回复  |  直到 16 年前
        1
  •  2
  •   morgancodes    16 年前

    您可以在其中编写普通的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,请使用<>,而不是<=>

        2
  •  0
  •   user53794    16 年前

    为什么不将整个选项列表作为模板参数传递?当然不是最优雅的…但它将避免向模板添加条件逻辑(即“此项是当前选中的项吗?”是输出“已选择”,无输出无)。