1

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

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

但它不会保存表中的视图数据。在这种情况下如何刷新页面?

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

4

1 回答 1

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 调用有延迟,它们有可能会相互堆积。

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

于 2012-06-13T21:51:17.907 回答