簡體   English   中英

Ember Data,有沒有更新

[英]Ember Data, hasMany not updating

不敢相信這么簡單的東西給了我這么多的傻瓜! 無論如何,我有兩個模型:

App.Basket = DS.Model.extend({
  fruits: DS.hasMany('App.Fruit')
});

App.Fruit = DS.Model.extend({
  basket: DS.belongsTo('App.Basket')
});

我獲取一個id為1的籃子並且不指定任何fruit_ids。 然后我用一個1的fruit.get('basket')獲取一個水果fruit.get('basket')返回籃子就好了。 但是, basket.get('fruits')是空的,它永遠不會更新。

在籃子中指定fruit_ids JSON不是一個可接受的解決方案,因為在實際的實際應用中,一個籃子可能有數千到數百萬的水果,用戶不需要全部取出它們。

我已經嘗試在App.Fruit上添加以下App.Fruit

didLoad: function() {
  this.get('basket').get('fruits').pushObject(this);
}

哪個適用於第一次加載。 但是,如果ember-data嘗試再次獲取數據,那么您只需:

Uncaught Error: Attempted to handle event `loadedData` on <App.Fruit:ember353:3> while in state rootState.loaded.updated.uncommitted. Called with undefined

didLoad更改為:

didLoad: function() {
  this.get('basket').get('fruits').pushObject(this);
  this.get('stateManager').send('becameClean');
  this.get('stateManager').send('finishedMaterializing');
}

刪除所有錯誤。 但是,即使在ember嘗試重新獲取數據時(例如,在訪問另一條路線之后再返回),didLoad也永遠不會被再次調用。

花了好幾個小時在這上面,我無法理解這么簡單的事情如何占用我的大部分時間。 我想要做的就是在獲取新水果時更新籃子上的hasMany!

我遇到了rootState.loaded.updated.uncommitted的問題。 這里的問題是ember-data在該狀態下沒有為loadedData事件提供處理程序。 不幸的是,沒有簡單的方法來添加事件,但我設法通過復制狀態的原始定義所在的閉包來實現。你可以在這里找到更多細節

http://discuss.emberjs.com/t/extending-ember-data-states/838

這里的工作代碼是gisted:

https://gist.github.com/pzuraq/5304796

我現在遇到了與hasMany關系類似的問題,所以我將嘗試實現它,看看我是否無法使其正常工作。 如果我的結果有任何進展,我會告訴你的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM