我對EmberJS相當陌生,在大部分時間裏,我一直在擺弄大部分時間,試圖在我正在開發的新應用程序中堅持一些hasMany和多對多關係。序列化異步擁有許多關係
我使用灰燼數據與ActiveModelAdapter
把它掛到我的軌道末端,它是利用ActiveModelSerializers
我使用的餘燼和我使用灰燼下面的數據版本。
DEBUG: -------------------------------
DEBUG: Ember : 1.6.0-beta.1+canary.d0f5f254
DEBUG: Ember Data : 1.0.0-beta.7+canary.d5562867
DEBUG: Handlebars : 1.1.1
DEBUG: jQuery : 1.10.2
DEBUG: -------------------------------
我一直有的基本問題是,當保存記錄時,關聯id不會被髮送回服務器。
我花了潛入ActiveModelSerializer source,並發現它跳過的hasMany系列化
var ActiveModelSerializer = RESTSerializer.extend({ // ...
/**
Does not serialize hasMany relationships by default.
*/
serializeHasMany: Ember.K,
}
我已經想出以下基本的解決方案,這是工作,到目前爲止,但我不知道是否有是遵循Ember公約和最佳實踐的更清潔的解決方案。
DS.ActiveModelAdapter.reopen
namespace: 'api/v1'
App.Store = DS.Store.extend
adapter: '-active-model'
App.ApplicationSerializer = DS.ActiveModelSerializer.extend
serializeHasMany: (record, json, relationship) ->
if relationship.options.async
key = relationship.key
data = record.get("data.#{key}")
if data?
json[@keyForRelationship(key, "hasMany")] = data.mapBy(Ember.get(this, "primaryKey"))
return
使用你的解決方案,工作正常,我只是刪除relationship.options.async,這不是我的情況。也許是時候在ember-data github中打開一個問題了? –