【发布时间】:2012-10-12 22:00:33
【问题描述】:
在 ember-data 中使用 RESTAdapter。我在服务器上创建了一条记录,我需要获取新创建记录的 id。该 id 是从服务器传回的,我可以在返回的 json 中看到它。
然而,在 DS.Model 的 didCreate() 回调中,this.get('id') 是未定义的。
我也尝试添加一个 record.one('didCreate',aClass,aClass.onDidCreate) 并检查 newRecord.get('id') 但它也是未定义的。
在 createRecord() 之后似乎没有调用 didCommit 回调,所以我不确定我应该在哪里检查生命周期回调。有人知道吗?
【问题讨论】:
-
这似乎返回的 json 不适合 RESTAdapter。可以发一下吗?
-
@sly7_2 我认为这不是问题,但这是 JSON:{"track":{"width":-1,"height":-1,"name":"5dplusgrip .jpg","id":270,"asset_id":295}}
-
好的,对,JSON 看起来没问题。你能发布更多的上下文吗?例如模型、如何执行请求、存储/适配器代码...您还可以将 newRecord.get('id') 包装在 Ember.run.next() 中,在 didCreate 回调中。
-
我认为这是github.com/emberjs/data/issues/405中讨论的一个错误
-
感谢您的确认 pangratz。目前我在下面的答案中创建了一个执行 addObserver() 的 mixin,并且我在模型上触发了一个自定义操作,“idWasCreated”。
标签: ember.js ember-data