如何在页面刷新时保留查看数据

时间:2012-06-13 21:14:01

标签: javascript jquery backbone.js mustache handlebars.js

我正在尝试在我的MVC应用程序中使用骨干架构。我使用HandleBars / Mustache创建了模板,我的模型包含我在UI(在div中)的表中显示的信息。

我想每隔5分钟重新加载页面以刷新表格中的数据。 我可以用 <meta http-equiv="refresh" content="some value" />

但它不会保存表中的视图数据。如何刷新此方案中的页面?

编辑: 基本上,在页面上我有一个搜索框,搜索项目被加载到一个表格上。如果我使用元标记刷新页面,则会重新加载页面,表格中的数据将消失。

1 个答案:

答案 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);
}

你也可以使用setIntervalclearInterval,但如果AJAX调用有延迟,他们可能会互相堆积。(/ p>)

您当然不必在视图中管理它。设置模型或集合每五分钟从服务器重新加载一次可能会更有意义;然后,您的视图将像往常一样绑定到模型或集合的事件,并重新绘制表格以响应模型/集合中的'reset''change',...事件。