2013-07-28 97 views
0

背景輪詢使用灰燼,數據使用Rails後端

我更習慣Rails,但是努力的JavaScript通過切換到一個MVC來提高我的客戶端。 Ember看起來很適合我(它與Rails很好地集成,並且在配置方法上也有類似的約定)。

我正在使用Ruby 2.0.0,Rails 4.0.0 & Ember 1.0.0-rc6.3因此意識到這是全新的。

但是,到目前爲止,我已經設法通過JSON API顯示數據庫中的數據,沒有任何問題,並且它工作得很好。

問題

我目前正在更新數據時,它雖然在數據庫上改變掙扎。

我最初的方法是先開始使用輪詢來保持客戶端數據在後臺作業進程和更新數據庫時更新(我希望進一步下線嘗試使用SSE和Live來使這個過程更好 - 但輪詢到從...開始)。

輪詢方面工作正常像這樣在我的控制器

App.AnalysesController = Ember.ArrayController.extend 
    loaded: (-> 
    setTimeout (=> @poll()), 1000 
).observes('content.isLoaded') 

    poll: -> 
    console.log @get('content') 
    @get('content').reload() 

我想我找到了解決我的問題與此承諾:

https://github.com/emberjs/data/commit/278a0b863f0b1b2494fe2319ac12be6167195f6b

,讓你可以重新加載該模型。

不幸的是,當我嘗試我得到這個錯誤...

Uncaught ReferenceError: reload is not defined

我不理解,因爲它看起來像我的內容是正確的格式,並沒有更新

Class {type: function, store: Class, isUpdating: false, toString: function, constructor: function…}

然而 - 這個工程...

App.AnalysesController = Ember.ArrayController.extend 
    loaded: (-> 
    setInterval (=> @poll()), 1000 
).observes('content.isLoaded') 

    poll: -> 
    @set('content', App.Analysis.find()) 

儘管對我來說感覺不對 - 我應該使用不重複find查詢的模型?

如果任何人有任何想法,爲什麼重裝不工作我會很感激,因爲我已經打了一下牆上的,但到現在爲止一直在享受學習的灰燼。

謝謝!

回答

1

刷新住在單獨的模型,而不是模型的陣列上。第二種方法是正確的方法,除非您想遍歷數組控制器中的項並調用reload。

+0

謝謝,這是有道理的。 – Chris