2012-07-30 112 views
2

嗨,我正在使用backbone.js paly2.0框架應用程序(與Java)。在我的應用程序中,我需要定期從數據庫中獲取表格數據(對於顯示即將發生的事件列表的用例,以及是否應該從列表中刪除舊事件)。我正在獲取要顯示的數據,但是問題是經常打數據庫。爲此,我嘗試按照這些鏈接使用backbone.js輪詢概念Polling a Collection with Backbone.js,http://kilon.org/blog/2012/02/backbone-poller/。但他們沒有從db中輪詢最新的集合。請建議我如何實現這個或其他選擇? 謝謝你。如何在backbone.js中進行輪詢?

+2

你是什麼意思與_「他們不是從數據庫查詢最新系列」 _。骨幹將使用您的服務器發送的數據,如果發送的數據不是您期望的問題可能在服務器端。 – fguillen 2012-07-30 09:39:50

+0

謝謝你的回覆.server正在發送數據,我的意思是說我要定期用1分鐘的時間打數據庫 – 2012-07-30 10:43:11

回答

8

有沒有一種原生的方式與骨幹做到這一點。但是,你可以實現長輪詢請求添加一些方法到您的收藏:

// MyCollection 
var MyCollection = Backbone.Collection.extend({ 
    urlRoot: 'backendUrl', 

    longPolling : false, 
    intervalMinutes : 2, 
    initialize : function(){ 
    _.bindAll(this); 
    }, 
    startLongPolling : function(intervalMinutes){ 
    this.longPolling = true; 
    if(intervalMinutes){ 
     this.intervalMinutes = intervalMinutes; 
    } 
    this.executeLongPolling(); 
    }, 
    stopLongPolling : function(){ 
    this.longPolling = false; 
    }, 
    executeLongPolling : function(){ 
    this.fetch({success : this.onFetch}); 
    }, 
    onFetch : function() { 
    if(this.longPolling){ 
     setTimeout(this.executeLongPolling, 1000 * 60 * this.intervalMinutes); // in order to update the view each N minutes 
    } 
    } 
}); 

var collection = new MyCollection(); 
collection.startLongPolling(); 
collection.on('reset', function(){ console.log('Collection fetched'); }); 
+0

只需要注意觸發你自己的''collectionFetched''可能是不需要的,因爲它會觸發''重置'已經,而且無論如何,這將更加普遍有用。 – loganfsmyth 2012-07-31 02:34:57

+0

我同意,我可以更新它。 :D的感覺是一樣的,謝謝! – 2012-07-31 02:59:19

相關問題