2013-09-29 23 views
1

我對jsRender真的很陌生,但是因爲我發現它非常適用於填充我的下拉列表(只有幾行) 我想問你如果可以使用jsRender不會對這些控件顯示任何數據來創建控件(至少不是現在)jsRender - 如何設置模板內的控件的ID

這是我在做什麼,現在幾個串聯的HTML代碼線簡化版本

HTML代碼:

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

的jsfiddle爲簡化版本http://jsfiddle.net/edaloicaro18/YURDR/2/

該串接中的所有列到行的部分,以然後將其指定表append(newRow)是一個我想擺脫。 我曾想過使用<script>標記中聲明的模板,將所有ID放在一個json數組中,並將其傳遞給render方法,就像我使用下拉列表一樣,並且我幾乎可以確定它會這樣做。

但是當我必須編輯時(不插入像我現在所做的那樣),我該怎麼做?然後,我不僅必須生成控件的ID,還必須在這些控件中顯示數據。那我該怎麼辦? jsRender是否在渲染方法中接受多個數據源?

你會在這種情況下做什麼?也許我只是作出小題大做

感謝您的幫助,阿克塞爾

附:這是我需要做的complete版本,只是爲了給出一個更好的主意。 http://jsfiddle.net/edaloicaro18/4yQML/25/embedded/result/ 我認爲,如果我找到如何處理簡化版本,我不會有任何複雜的問題。

回答

1

JsRender可以傳遞你想渲染方法,任何數據,也可以讓你通過輔助方法和元數據等的附加上下文參數:

myTemplate.render(data, context) 

的渲染方法的API文檔here

從模板中可以訪問上下文對象的屬性或方法,如~someProperty~someMethod(...)

但是,您可能會考慮使用JsRender渲染整個內容,而不僅僅是選項。如果你使用JsViews,那麼你不需要編寫代碼來追加或刪除DOM元素。它可以以聲明方式工作。

這裏有一個非常簡單的例子Data-linked tags,以及更多在這裏:JsViews samples

您可能也有興趣this page(更高級) - 因爲它顯示了您有時可以選擇插入ID還是使用替代方法(在不再需要的地方)。