2012-06-13 95 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:謝謝你的擡頭。有時候,分鐘會感覺像幾個小時:) –

相關問題