1
我正在嘗試重新加載已在服務器上更改過的模型。我的代碼如下:餘燼數據重新加載()undefined
App.CustomersController = Ember.ArrayController.extend({
intervalId: undefined,
startRefreshing: function() {
var self = this;
if (self.get('intervalId')) {
return;
}
self.set('intervalId', setInterval(function() {
//self.get('model').update();
self.get('model').reload();
}, 30000));
}
});
App.CustomersRoute = Ember.Route.extend({
model: function() {
return this.store.find('customer');
},
setupController: function(controller, model){
this._super(controller, model);
controller.startRefreshing();
},
actions: {
reload: function() {
this.get('model').reload();
}
}
});
你可以看到,我有兩個機制重新載入數據 - 一個定時器,也可以通過在用戶界面中的按鈕觸發的動作。後者正是在這裏的餘燼數據文檔中顯示的:http://emberjs.com/api/data/classes/DS.Model.html#method_reload
兩者都不起作用。在這兩種情況下我都得到了未定義,即返回的模型沒有reload()方法。 update()類型的作品,除非它不刪除已刪除的記錄,並且它不是文檔中建議的內容。在嘗試使用重新加載時,我在這裏做錯了什麼?
我的堆棧:
DEBUG: -------------------------------
DEBUG: Ember : 1.5.1+pre.07fafb84
DEBUG: Ember Data : 1.0.0-beta.7.f87cba88
DEBUG: Handlebars : 1.3.0
DEBUG: jQuery : 1.11.0
DEBUG: -------------------------------
,我使用的情況下,下面的適配器使任何差異:
App.Store = DS.Store.extend({
// Override the default adapter with the `DS.ActiveModelAdapter` which
// is built to work nicely with the ActiveModel::Serializers gem.
adapter: '-active-model'
});
謝謝。所以self.store.find('customer')確實會調用後端,類似於update()。但是,它不會刪除不在後端模型中的記錄。所以如果我添加一條記錄,我會看到我的記錄數增加1,我在本地看到它。如果我刪除了一條記錄,那麼我的後端有1條記錄,然後我的餘燼模型會記錄下來。我發現這個方法的唯一方法是調用this.store.unloadAll,然後再次加載所有記錄。不幸的是,這會導致令人討厭的閃爍,因爲我所有的記錄都被刪除並重新添加,並且所有視圖都在兩次調用之間更新。 –
我真的希望只有一種方法來重新同步後端模型的燼模型。 –
我一直在使用https://github.com/kurko/ember-sync和indexedDB插件。這仍然是一個在製品,但絕對值得檢查,因爲它正朝着正確的方向前進。 – genkilabs