問題
我有一個顯示工作列表的視圖。該視圖有一個按鈕,它調用名爲refresh
的控制器方法。最初我將content
設置爲這個列表,但是注意到UI會閃爍,這一旦在定時器上運行時會特別惱人。在Ember中刷新內容時緩解閃爍的UI
我設法使一切工作,而無需使用閃爍如下:
App.WorkersIndexController = Ember.ArrayController.extend
refresh: ->
console.log 'refreshing workers'
# set a property to a new collection
@set 'refreshing', App.Worker.find()
# observer that watches the new collection load
update: (->
refreshing = @get 'refreshing'
return unless refreshing.get('isLoaded')
# what this question is about...
Ember.run =>
@set 'content', refreshing
).observes('refreshing.isLoaded')
正如你可以看到我設置刷新的內容給一個臨時變量,並觀察內容的加載,然後更新內容。直到我添加了對Ember.run
的呼叫,完全消除了閃爍,內容才閃爍。
我明白爲什麼閃爍正在發生,我明白爲什麼Ember.run
使它消失,但我的問題是什麼是最好的方法來解決這個問題,而不訴諸於Ember.run
?我覺得打電話給Ember.run是最後的手段...任何幫助將不勝感激!
編輯:另外我沒有使用燼數據。該find
方法是這樣的:
App.Worker.reopenClass
find: ->
console.log 'loading workers'
workers = Em.A []
request = $.getJSON '/api/admin/workers', (data) =>
console.log ' -> loaded workers'
data.forEach (d) =>
worker = App.Worker.create(d)
worker.set 'isLoaded', true
workers.pushObject(worker)
request.error =>
console.log ' -> failed to load workers'
workers.set 'isFailed', true
request.complete =>
workers.set 'isLoaded', true
workers
我在別處使用這個,但問題是當我刷新時我無法跟蹤身份。我將無法合併來自新數據的更改=( – jonnii 2013-02-14 22:48:02