jsRender - 如何设置模板内控件的ID

时间:2013-09-29 13:50:54

标签: jquery jsrender

我是jsRender的新手,但是因为我发现它对于填充我的下拉列表非常有用(只有几行) 我想问你是否可以使用jsRender创建控件而不显示那些控件上的任何数据(至少现在不是这样)

这是我正在做的简化版,现在连接几行html代码

HTML code:

<table>
    <tr>
        <td>
            <fieldset id="fldRetorno">
                <legend>Return Details</legend>
                <input id="addRow" type="button" value="+ Add" />
                <table id="tbRetornosModelos" class="tabla-retorno">
                    <tbody></tbody>
                </table>
            </fieldset>
        </td>
    </tr>
</table>
</table>

JS代码:

 var counter = 0; // Counter for number of rows     

 $("#addRow").on('click', function () {
     counter = counter + 1;

     var newName = "Name" + counter;
     var newType = "Type" + counter;

     var newEnlaceEstruct = "tbExp_s1_e" + counter;
     var newRow = '<tr><td>Return # ' + counter + ':  </td>' +
         '<td>' + '  Name</td>' +
         '<td><input type="text" id="' + newName + '" />' + '</td>' +
         '<td>Data Type</td>' +
         '<td><select name="select" id="' + newType + '"> <option value="Seleccione" selected>Select...</option> <option value="Number" >Number</option><option value="Text">Text</option></select></td>' +
         '<td><input type="button" value="-Remove" class="deleteFila"></td>' +
         '<td><input type="hidden" id="enlace' + counter + '" value="' + newEnlaceEstruct + '" /></td>' +
         '</tr>';
     $('table.tabla-retorno >tbody').append(newRow);

     $(".deleteFila").on("click", function (event) {
         $(this).closest("tr").remove();
     });
 });

简化版本http://jsfiddle.net/edaloicaro18/YURDR/2/

的jsfiddle

将所有列连接成一行,然后为其分配表append(newRow)的部分是我想要删除的部分。 我曾想过使用在<script>标签中声明的模板,将所有id放在json数组中并将其传递给render方法,就像我对下拉列表一样,我差不多了确定它会。

但是当我需要编辑时(不插入我现在正在做的事情),我该怎么办?然后我不仅要为控件生成id,还要在这些控件中显示数据。那我该怎么办? jsRender是否在render方法中接受多个数据源???

在这种情况下你会怎么做?也许我只是在一个小山丘上建造一座山。

感谢任何帮助,Axel

P.S。这是我需要做的complete版本,只是为了给出一个更好的主意。 http://jsfiddle.net/edaloicaro18/4yQML/25/embedded/result/ 我想如果我找到如何处理简化版本,我就不会遇到复杂问题。

1 个答案:

答案 0 :(得分:1)

JsRender允许您将所需的任何数据传递给render方法,还允许您在附加的context参数中传递辅助方法和元数据等:

myTemplate.render(data, context)

渲染方法的API文档是here

从模板中,您可以访问上下文对象的属性或方法~someProperty~someMethod(...)

但您可以考虑使用JsRender呈现整个内容,而不仅仅是选项。如果你使用JsViews,那么你不需要编写代码来追加或删除DOM元素。它只能以声明方式工作。

这里有一个非常简单的示例Data-linked tags,还有更多示例:JsViews samples

您可能对this page(更高级)感兴趣 - 因为它显示了您有时可以选择插入ID或使用不再需要的替代方法......