Gre*_*egg 4 ember.js ember-data
使用Ember 2.6.0
定义以下路线:
Router.map(function() {
this.route('brands');
this.route('brand', {path: '/brands/:brand_id'});
});
Run Code Online (Sandbox Code Playgroud)
模型brand是:
export default Model.extend({
name: attr('string'),
description: attr('string'),
dateCreated: attr('date'),
lastUpdated: attr('date'),
regions: hasMany('region')
});
Run Code Online (Sandbox Code Playgroud)
而模型region是:
export default Model.extend({
name: attr('string'),
dateCreated: attr('date'),
lastUpdated: attr('date'),
brand: belongsTo('brand')
});
Run Code Online (Sandbox Code Playgroud)
现在,当试图访问/brands我在路线中这样做:
export default Ember.Route.extend({
model() {
return this.store.findAll('brand');
}
});
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
您需要将模型名称传递给商店的modelFor方法
这在添加brand路线和region关系之前有效.品牌是父母,所以我不确定为什么这不起作用.
更新:
regions: hasMany('region')从brand模型中删除可以让事情再次发挥作用.不确定为什么它不能使用已定义的关系.
所以事实证明我必须为每个对象创建序列化器.对于品牌我有:
import RESTSerializer from 'ember-data/serializers/rest';
import DS from 'ember-data';
export default RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
regions: {embedded: 'always'}
}
});
Run Code Online (Sandbox Code Playgroud)
因为region我有:
import RESTSerializer from 'ember-data/serializers/rest';
export default RESTSerializer.extend({
});
Run Code Online (Sandbox Code Playgroud)
从技术上讲,它在没有区域序列化器的情况下工作,但是我得到一个警告,即ember regions在region模型中找不到.我可以向ember提交一张票,建议不要创建一个空的RESTSerializer,以避免这个警告.
| 归档时间: |
|
| 查看次数: |
3219 次 |
| 最近记录: |