1

在我调用render我的 jsRender 模板后,它似乎被消耗掉了,因此从 DOM 中删除了。这令人沮丧,因为我有一个页面需要根据用户交互多次呈现模板。

console.log($('#tpl'));
$('#container').html($('#tpl').render(json));
console.log($('#tpl'));

第二个 console.log 是一个空数组,我可以使用 DOM 检查器和 jsRender 抛出的异常确认模板不再存在:Uncaught JsRender Error: Unknown template: "#tpl"-- 必须重新加载页面才能将模板重新注入 DOM。

如何在渲染之间保留 jsRender 模板?

4

2 回答 2

2

我仍然不确定为什么它必须被消耗并且在第一次渲染后根本不能留在 DOM 中,但我找到了一种解决方法。如果有人知道从 DOM 中删除模板的原因,我仍然很感兴趣。

更新:实际答案(谢谢,鲍里斯)

我的模板在我的#container元素中,所以该html()方法当然是覆盖它。傻我。

无论如何,巧妙的小技巧

使用这个“变体”示例,我将模板保存在局部变量中。然后我调用render变量名而不是 jQuery 选择器:

var tpl = $.templates('#tpl');

.
.
.

console.log(tpl);
$('#container').html(tpl.render(json));
console.log(tpl);

设法在渲染中保留模板。

于 2012-07-16T17:31:09.713 回答
0

我今天也遇到了类似的问题,我在正文中有两个目标 div 和两个脚本块模板。我的问题是我没有正确关闭 div 元素标签(太多的 xaml),结果是第二个模板从未呈现,因为它找不到。

这是一个显示正确用法的 JsFiddle(而不是 /> 自关闭语法):

http://jsfiddle.net/jgoldsmith/XvvPC/

希望对其他人有所帮助。

于 2012-08-03T15:27:19.330 回答