Я новичок в JSrender, и у меня возникли проблемы с созданием уникальных идентификаторов в шаблоне JSrender, поскольку он в значительной степени выводит все, что написано в блоке text / x-jsrender (кроме предопределенных тегов). Вот мой код:

HTML: <div id="showjsrender"></div>

Шаблон скрипта:

<script type="text/x-jsrender id="tmpl">
<div class="displayTodo" id="displayTodo"+uniqueID+"">
..
</div>
</script>

Сценарий:

<script>
function call(variable, index){
    var template = $.templates("#tmpl");
    var htmlOutput = template.render(variable, index);
    $("#showJSrender").html(htmlOutput);
}
</script>

JS файл (внешний файл):

app.editTask = function(e){
        todoArr[e].editOn = true;
        document.getElementById("displayTodo"+e+"").innerHTML = "";
        editCalled(todoArr, e);
}

Я попытался отправить весь массив todoArr и повторно отрендерить весь массив и сгенерировать уникальный идентификатор, используя индекс массива (getIndex ()), но, отправляя каждый раз отдельные индексированные данные, мне было трудно их сгенерировать.

0
iyerrama29 3 Мар 2016 в 08:21

1 ответ

Лучший ответ

Вы можете использовать помощник (http://www.jsviews.com/#helpers):

<div ... id="displayTodo{{:~uniqueID()}}" >div1...</div>
<div ... id="displayTodo{{:~uniqueID()}}" >div2...</div>
...

С глобальным помощником:

var counter = 0;
$.views.helpers("uniqueID", function() { return counter++; });
...
var htmlOutput = template.render(model);
...

Или помощник, переданный вызову рендеринга:

var counter = 0;
...
var htmlOutput = template.render(model, {uniqueID:
    function() { return counter++; }
});
...
1
BorisMoore 3 Мар 2016 в 19:33