我正在尝试在我的MVC应用程序中使用骨干架构。我使用HandleBars / Mustache创建了模板,我的模型包含我在UI(在div中)的表中显示的信息。
我想每隔5分钟重新加载页面以刷新表格中的数据。
我可以用
<meta http-equiv="refresh" content="some value" />
,
但它不会保存表中的视图数据。如何刷新此方案中的页面?
编辑: 基本上,在页面上我有一个搜索框,搜索项目被加载到一个表格上。如果我使用元标记刷新页面,则会重新加载页面,表格中的数据将消失。
答案 0 :(得分:1)
我想每隔5分钟重新加载页面以刷新表格中的数据。
不完全。您希望每五分钟重新加载一次数据,以便刷新页面中的表格。
您应该在某个地方使用setTimeout
,甚至可能在您的视图中使用initialize
:
start_reloader: function() {
var _this = this;
this.timer = setTimeout(function() {
$.ajax({
// Load the data from your server...
success: function(data) {
_this.redraw_the_table(data);
_this.start_reloader();
}
});
}, 5*60*1000);
},
initialize: function() {
this.start_reloader();
}
然后你想要remove
中的某些东西来杀死计时器:
remove: function() {
if(this.timer)
clearTimeout(this.timer);
return Backbone.View.prototype.remove.apply(this);
}
你也可以使用setInterval
和clearInterval
,但如果AJAX调用有延迟,他们可能会互相堆积。(/ p>)
您当然不必在视图中管理它。设置模型或集合每五分钟从服务器重新加载一次可能会更有意义;然后,您的视图将像往常一样绑定到模型或集合的事件,并重新绘制表格以响应模型/集合中的'reset'
,'change'
,...事件。