直到ember-beta 14,一切都很顺利。
我有goal
和account
型号。
目标hasMany('account')
,但帐户没有或属于目标(不是在ember上,我的应用没有理由。
使用自定义序列化程序,我一切正常:
//serializers/goal.js
import DS from 'ember-data';
export default DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
account: { serialize: 'ids' }
}
});
我的post
请求完全符合我的要求:
...
account_ids: [1, 2, 3]
...
现在我只有account_ids: []
。
Ember对我的序列化器有所了解,否则我会在请求中提出accounts
,而不是account_ids
。
我尝试了docs的所有可能组合,包含和不包含{async: true}
等,没有任何效果。
我做错了什么?
我觉得它与新的snapshots
api有关,但找不到任何有关如何使用它的线索。
谢谢!
答案 0 :(得分:0)
感谢天使VB的帮助。
但我提出了另一个解决方案,这似乎是问题的根源。
在ember-data beta.14
之前,您需要将select
绑定到value.content
。
Ant适用于single
和multiple
选择。
{{view 'select'
content=myDropdownContent
value=model.myProperty.content
}}
{{view 'select'
content=myDropdownContent
value=model.myProperty.content
multiple='multiple'
}}
从beta-15
开始,如果您绑定到content
它似乎有效,则Ember Inspector
您会看到数据发生变化,但未序列化
解决方案非常简单,只需遵循Ember文档......
{{view 'select'
content=myDropdownContent
value=model.myProperty
}}
{{view 'select'
content=myDropdownContent
selection=model.myProperty
multiple='multiple'
}}
现在,使用相同的序列化程序,它可以工作!它全部为后端序列化。
答案 1 :(得分:-2)
我遇到了同样的问题,但终于可以解决这个问题了:
型号/ foo.js:
var foo = DS.Model.extend({
...,
...,
...,
bars: DS.hasMany('bar', {async: true})
});
export default foo;
型号/ bar.js:
var bar = DS.Model.extend({
...,
Foos: DS.hasMany('foo', {async: true})
});
export default bar;
串行器/ foo.js:
import DS from 'ember-data';
export default DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin,{
attrs: {
Bars: {
embedded: 'always'
}
}
});
串行器/ bar.js:
import DS from 'ember-data';
export default DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin,{
attrs: {
Foos: {
embedded: 'always'
}
}
});
我希望这对你有所帮助。