jQuery模板插件和数据持久化
jQuery Templates plugin and data 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"};
模板会在呈现之后改变它的内容。有人知道有什么方法可以预防吗?
解决方案!:看我对布兰登·布恩的回答的评论例子:
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,我不认为模板是解决方案。
相关文章:
- 在post-expressjs之后持久化表单数据
- 如何使 Angular 服务中的数据通过页面刷新持久化
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- 使用 JavaScript 将数据持久化在服务器上
- 如何在 react.js 中跨子组件持久化数据或状态
- 如何在javaScript:Jquery中保存/持久化和访问客户端的数据
- Ember Mirage 持久化数据
- 如何在angularjs中持久化表单字段数据
- 在AngularJS应用程序中本地持久化数组数据,以便在两个应用程序之间共享
- 我可以在浏览器之间通过Javascript持久化应用程序数据吗
- 在我的服务工厂中,我查找了一个大型数据集——我想持久化它,并检查它的存在,以避免再次调用它
- 如何在猫鼬获取后持久化数据
- 如何在angular JS中持久化数据和模型
- 如何使用Angular更新Kendo-UI网格上的数据并持久化层级选择?
- Ember没有持久化belongsTo数据
- Google apps脚本:如何在不同的函数调用之间在电子表格中持久化数据
- 在knockoutJS中为observableArray在客户端持久化数据
- 跨多个控制器持久化数据
- 如何在卸载应用程序后在数据库中持久化数据
- jQuery模板插件和数据持久化