2016-03-03 102 views
0

我是JSrender的新手,並且在JSrender模板中生成唯一標識時出錯,因爲它幾乎可以輸出任何寫在文本/ x-jsrender塊中的東西(預定義標籤除外) 這是我的代碼:如何在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())生成唯一的ID,但在每次發送單個索引數據,我發現很難生成一個。

回答

0

您可以使用一個輔助(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++; } 
}); 
...