我有一个匿名数组被传递到JsRender模板,我如何引用每个元素动态渲染它们?
以下是模板代码,我已将其设置完毕,我只是不知道要传递到{{for}}标记的变量:
<script id="template" type="text/x-jsrender">
{{for /*What goes here?*/}}
<div id="{{>id}}" class="title">{{>title}}</div>
{{/for}}
</script>
以下是使用数据呈现模板的代码。我不知道传入方法的数组的长度。
$('#template').render([{
id: 1,
title: 'first title'
}, {
id: 2,
title: 'second title'
}, {
id: 3,
title: 'third title'
}]);
答案 0 :(得分:1)
如果要将数组传递给JsRender方法,则JsRender 将自动遍历数组,并将应用模板的结果连接到数组中的每个项目。
http://www.jsviews.com/#tmplrender
所以你不需要包裹{{for ...}}
。只需写下:
<script id="template" type="text/x-jsrender">
<div id="{{>id}}" class="title">{{>title}}</div>
</script>
顺便说一下, 可以 告诉渲染不要自动渲染数组,方法是将true
作为第二个参数传递:$('#template').render(myArray, true)
。现在,在这种情况下,您需要告诉模板本身进行迭代 - 您可以通过包装{{for}}<div>...</div>{{/for}}
(没有参数) - 或等效{{for #data}}<div>...</div>{{/for}}
(#data
作为参数来执行此操作)。
答案 1 :(得分:0)
经过一些研究和倡议,我发现#data
代表了JsRender的当前价值。
因此{{for #data}}
是正确答案!