jQuery Templates插件和数据持久性

时间:2011-07-22 00:13:24

标签: javascript jquery templates plugins persistence

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

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();
});

2 个答案:

答案 0 :(得分:3)

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

重构为:

http://jsfiddle.net/dq9es/

将解决问题

答案 1 :(得分:0)

这是因为你跑步时

$.tmpl(template, {});

它为您传递的每个数据循环遍历模板并相应地填充div。如果你没有传递任何数据,它就不会循环遍历模板并输出html。

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