jsRender模板在渲染后消失

时间:2012-07-16 17:31:10

标签: templates jsrender

在我的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模板?

2 个答案:

答案 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/

希望能帮助别人。