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,所以我停下来思考我做错了什么。
你能告诉我吗?