在我的jsRender模板上调用render
之后,它似乎被消耗了,因此从DOM中删除了。这很令人沮丧,因为我有一个页面需要根据用户交互多次呈现模板。
console.log($('#tpl'));
$('#container').html($('#tpl').render(json));
console.log($('#tpl'));
第二个console.log是一个空数组,我可以使用DOM检查器和jsRender抛出的异常确认模板不再存在:Uncaught JsRender Error: Unknown template: "#tpl"
- 必须重新加载页面才能重新注入模板进入DOM。
如何在渲染之间保留jsRender模板?
答案 0 :(得分:2)
我仍然不确定为什么它必须被消耗,并且在第一次渲染后根本无法留在DOM中,但我找到了一种解决方法。如果有人知道从DOM中删除模板的原因,我仍然感兴趣。
更新:实际答案(谢谢,鲍里斯)
我的模板位于我的#container
元素中,因此html()
方法当然会覆盖它。傻我。
解决方法反正整齐的小技巧
使用this 'variant' example,我将模板保存在局部变量中。然后我在变量名称而不是jQuery选择器上调用render
:
var tpl = $.templates('#tpl');
.
.
.
console.log(tpl);
$('#container').html(tpl.render(json));
console.log(tpl);
还设法在渲染中保留模板。
答案 1 :(得分:0)
今天我也遇到了类似的问题,我身上有两个目标div和两个脚本块模板。我的问题是我没有正确关闭div元素标签(太多xaml),结果是第二个模板从未呈现,因为它找不到。
这是一个显示正确用法的JsFiddle(而不是/>自动关闭语法):
http://jsfiddle.net/jgoldsmith/XvvPC/
希望能帮助别人。