2012-06-13 63 views
1

我正在尝试在我的MVC应用程序中使用骨干架构。我使用HandleBars/Mustache创建了模板,我的模型包含的信息显示在UI上的表格(div内)中。如何在页面刷新上保留视图数据

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

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

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

+0

你是什么意思“它不会保存在表中的视图数据?”在刷新时,它应该从数据库中查找新的查看数据。 –

+0

请参阅Q上面的更新 – dotNetNewbie

回答

1

我想重新加载页面,每隔5分钟刷新表中的数据。

不完全。您希望每五分钟重新加载一次数据,以便刷新页面中的表格。

你应该在你的视图的initialize使用setTimeout的地方,甚至是:

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',...事件重绘表格。

+0

5 * 60 * 60 * 1000 = 5小时? :) – theotheo

+0

@ user1248256:谢谢你的抬头。有时候,分钟会感觉像几个小时:) –

相关问题