2013-09-29 6 views
1

Я действительно новичок в jsRender, но так как я нашел его полезным для заполнения моего раскрывающегося списка (всего несколькими парами) Я хотел спросить вас если можно использовать jsRender для создания элементов управления без отображения каких-либо данных на этих элементах управления (по крайней мере, не сейчас)jsRender - Как установить идентификатор элементов управления внутри шаблона

Это упрощенная версия о том, что я делаю сейчас конкатенации несколько строк 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>, поместив все идентификаторы в массив json и передав его методу render, так же, как и в раскрывающихся списках, и я почти уверен, что он это сделает.

Но что мне делать, когда мне нужно редактировать (не вставлять, как то, что я делаю сейчас)? Тогда мне придется не только генерировать идентификаторы для элементов управления, но и отображать данные в этих элементах управления. Что мне тогда делать? Может ли jsRender принимать более одного источника данных в методе визуализации ???

Что бы вы сделали в этом случае? Может быть, я просто сделать гору из кротовой норы

Спасибо за любую помощь, Axel

P.S. Вот версия 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 (более продвинутый) - поскольку он показывает, как иногда у вас есть выбор в отношении вставки идентификаторов или использования альтернативных подходов, когда это больше не нужно ...

Смежные вопросы