jQuery模板插件和数据持久化

jQuery Templates plugin and data persistence

本文关键字:数据 持久化 插件 jQuery      更新时间:2023-09-26

我不太确定发生了什么,但所有迹象都指向这个方向。我有这段代码(工作):

some_data = {"item":"value"};
$.get("some_template.php", function(template)
{
    $.tmpl(template, some_data).appendTo("#some_div");
    do_something_else();
});
//evil line

和#some_div被填充…但是,如果在"邪恶的行",我写这个:

some_data = {};

#some_div显示为空。模板插件中是否存在某种数据持久化?我不应该在使用后与some_data混淆?

2011-07-22重要!据我所知,json对象和模板是链接的,所以如果我在"邪恶行"处这样做:

some_data = {"item":"new value"};

模板会在呈现之后改变它的内容。有人知道有什么方法可以预防吗?

解决方案!:看我对布兰登·布恩的回答的评论例子:

some_data = {"item":"value"};
$.get("some_template.php", function(template)
{
    $.tmpl(template, some_data).appendTo("#some_div");
    some_data = {}; //evil line
    do_something_else();
});

看起来function(template){...}是一个异步回调函数。这意味着您的"邪恶行"可能会在到达该函数内部之前执行。因此,当您在函数中使用some_data时,它已经是空的。

重构:http://jsfiddle.net/dq9es/

将修复这个问题

这是因为当你运行

$.tmpl(template, {});

将遍历模板,查找传递给它的每个数据块,并相应地填充div。如果你不给它传递任何数据,它就不会循环遍历模板并输出html.

如果你只是想加载静态html,我不认为模板是解决方案。