我不太确定发生了什么,但所有迹象都指向了我这个方向...... 我有这段代码(工作):
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();
});
答案 0 :(得分:3)
看起来function(template){...}
是一个异步回调函数。意味着您的“邪恶线”可能会在达到此功能的内部之前执行。所以当你在函数中使用some_data时,它已经是空的。
重构为:
将解决问题
答案 1 :(得分:0)
这是因为你跑步时
$.tmpl(template, {});
它为您传递的每个数据循环遍历模板并相应地填充div。如果你没有传递任何数据,它就不会循环遍历模板并输出html。
如果您只是尝试加载静态html,我认为模板不是解决方案。