我不太确定发生了什么,但所有迹象都指向我这个方向.. 我有这段代码(工作):
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"};
即使在呈现后,模板也会更改其内容。 有人知道是否有办法防止这种情况发生吗?
解决方案!:查看我对 Brandon Boone 的回答的评论 示例:
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 时,它已经是空的了。
重构为:
会解决问题
关于javascript - jQuery 模板插件和数据持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784348/