3

DS.Model我在两个类之间有以下关系:

App.DocumentType = DS.Model.extend
  ...
  propertyTypeJoins: DS.hasMany("App.DocumentTypePropertyType")

App.DocumentTypePropertyType = DS.Model.extend
  documentType: DS.belongsTo('App.DocumentType')

子记录总是嵌入并且从不单独保存:

App.Adapter.map 'App.DocumentType'
  propertyTypeJoins:
    embedded: 'always'

documentType当我使用一条记录和 n 条相关记录提交事务时DocumentTypePropertyType,我收到以下错误:

"Attempted to handle event 'didCommit' on <App.DocumentTypePropertyType:ember1806:38072> while in state rootState.loaded.updated.uncommitted. Called with undefined"

查看代码,我意识到适配器的didSaveRecord方法向didCommit每个嵌入的记录发送了一个事件。这似乎很好,因为孩子被宣布与父母一起被保存(见embedded: 'always'上文)。

引发错误是因为willCommit事件未传播给子级,因此它们仍处于该uncommitted状态并且无法didCommit在该状态下处理。父级本身已转换到inFlight,因此不会在那里引发错误。

在我看来,观察到的行为是不一致的。要么所有事件都应该发送给孩子,要么不发送。否则会出现各种不一致的行为。

似乎我正在反对而不是使用 ember-data,所以我停下来思考我做错了什么。

你能告诉我吗?

4

0 回答 0