javascript - jQuery 模板插件和数据持久性

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

最佳答案

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

重构为:

http://jsfiddle.net/dq9es/

会解决问题

关于javascript - jQuery 模板插件和数据持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784348/

相关文章:

javascript - Vue.js 构建器在 index.html 中生成不正确的路径

javascript - jQuery Sortable - 允许将某些项目仅放入某些列表中

jquery - 使用选项的值通过 jquery 编辑内部文本

javascript - jQuery 文件上传不显示预览

c++ - C++ 中 "unused template parameter"的最佳实践

javascript - HTML5获取地理位置功能

javascript - 从 JavaScript 函数触发 c# 事件

javascript - Jquery的change()函数

c++ - 接受 lambda 作为函数参数并提取返回类型

c++ - 如何从 `decltype(<funtion>)` 获取函数参数的数量?