JsRender中,有三种方式调用render()方法来渲染模板。
1) 如果已经存在一个template的对象,则可以使用template.render(...)
[html] view plain copy print?
<table><tbody id="person"></tbody></table>
<script id="personTmpl" type="text/x-jsrender">
<tr>
<td>
{{:name}}
</td>
</tr>
</script>
[javascript] view plain copy print?
var myTmpl = $.templates("#personTmpl")
var person = {
name: "Adriana"
}
var html = myTmpl.render(person)
$("#person").html(html)
2) 如果已经有一个通过名字注册的template,名字为("myTmpl"),则可以使用$.render.myTmpl(...)调用。
[html] view plain copy print?
<table><tbody id="person"></tbody></table>
<script id="personTemplate" type="text/x-jsrender">
<tr>
<td>
{{:name}}
</td>
</tr>
</script>
[javascript] view plain copy print?
$.templates("personTmpl", "#personTemplate")
var person = {
name: "Adriana"
}
var html = $.render.personTmpl(person)
$("#person").html(html)
3)如果该template是在一个script脚本块中定义的,并且该脚本块使用selector“#myTmpl",则同样可以使用$("#myTmpl").render(...)调用。
[html] view plain copy print?
<table><tbody id="person"></tbody></table>
<script id="personTemplate" type="text/x-jsrender">
<tr>
<td>
{{:name}}
</td>
</tr>
</script>
[javascript] view plain copy print?
var person = {
name: "Adriana"
}
var html = $("#personTemplate").render(person)
$("#person").html(html)
在用ejs模板进行渲染时遇到这样一个问题,nodejs端返回一个数组,在模板渲染出来的结果不是想要的数据,如下:
模板里是这样的
hotBrands 应该是一个对象数组,结果打印出来的结果是下图这样的,用 encodeURIComponent 转换后结果也还是一样
浏览器自动转换了,于是我想着把 hotBrands 转化成 json 字符串,如下:
结果如下
还是不能正常显示
最后我试着两着结合
结果如下:
终于正常显示了,好坑。
所以在用模板渲染时要注意一些特殊数据类型或符号可能会被浏览器转换,如果遇到了需要特殊处理一下。