我正在使用dgrid OnDemandGrid
來顯示來自Dojo JsonRest
商店的數據。這工作得很好,但我希望網格自動顯示更改的數據。在服務器告訴所有客戶端哪些數據發生了變化的情況下實現基於推送的方法太費工夫了,所以我正在尋找一種基於客戶端的解決方案。使用dgrid的refresh()
沒有用,因爲這會導致閃爍並重置整個網格。自動刷新dgrid內容
到目前爲止,我的最佳猜測是定期從第二個商店實例中獲取所有數據,將其與實時商店實例進行比較,並使用Observable
存儲包裝向網格通知任何已更改的數據。
有更好,更優雅的解決方案嗎?如果不是,我該如何做到最好?
編輯:這種方法的問題是要知道哪些行當前顯示在網格中。我的應用程序使用大量數據,因此在兩個dojo商店中同步整個集合並不是一個好主意。有沒有辦法確定網格中當前顯示哪些行?理想情況下,網格會定期重新請求當前顯示行的數據。不能那麼辛苦,對吧?
EDIT2:我的最好的辦法,到目前爲止是「黑客」的Observable
店,跟蹤所有的呼叫到observe
。然後,我會定期重新執行觀察到的查詢並將更改合併到實時商店中。 問題是,dgrid保持太多觀察者打開這個工作順利。它關閉了其中的一些,所以在我的代碼中沒有錯誤,我將farOffRemoval
設置爲500(也嘗試越來越高)。
這是我到目前爲止的代碼:https://gist.github.com/3225927
它遠不完成,但它顯示足夠的調試信息顯示問題出在哪裏。由於可能沒有人想要設置這個,並且jsfiddle上沒有dgrid,我可以告訴你,在一個1000入口網格中滾動一下之後,大約有10-15個觀察者和observerStats.abs(至少觀察到所有行的計數一次)大約是750
我很想聽到,如果你已經找到了更好的解決方案,或者如果您使用的是可觀察黑客消力。我目前正在努力解決同樣的問題。 – Frode 2013-02-20 21:14:27
是的,我做了,看到我的新答案的細節。 – xato 2013-02-21 10:20:52