javascript – 如何在Ember-data中的一个JSON请求中加载两个模型?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何在Ember-data中的一个JSON请求中加载两个模型?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1272字,纯文字阅读大概需要2分钟。
内容图文
![javascript – 如何在Ember-data中的一个JSON请求中加载两个模型?](/upload/InfoBanner/zyjiaocheng/777/c7a1c4e573d44e3197ba145d70dd6fa0.jpg)
使用Ember-data和Ember.js,我正在尝试使用一个JSON请求加载两个模型.模型的关系类似于:
App.Person = DS.Model.extend({
name: DS.attr('string'),
dogs: DS.hasMany('App.Dog'),
});
App.Dog = DS.Model.extend({
name: DS.attr('string'),
owner: DS.belongsTo('App.Person'),
});
我的服务器正在发送JSON,如下所示:
{
"dog": {
"id": 1,
"name": "Fido",
"owner": {
"id": 1,
"name": "John Smith",
"dogs": [1]
}
}
}
…然而,Ember-data仍然向我的服务器发送请求(使用findQuery),试图获得所有者JSON.
我有一个jsFiddle设置,演示它here.要观察问题发生,你需要转到此链接来激活路由/模板:
http://fiddle.jshell.net/6kQ8s/2/show/#/dog/1
我没有在我的适配器中定义findQuery()因为我不需要它来获取我已发送的数据……对吗?
有谁知道我在这里做错了什么?
解决方法:
我正在做以下(使用ember-data revision 8)
App.Dog = DS.Model.extend({
name: DS.attr('string'),
owner: DS.belongsTo('App.Person', { embedded: true }),
});
另外,我必须告诉序列化器加载这种关系的映射.
虽然它不是必需的,但我使用的是自己的DS.Serializer子类.在初始化时
序列化程序加载Person类的映射的时间,该类指定了该类
应加载嵌入式关系.
App.WOSerializer = DS.Serializer.extend({
init: function(){
this._super();
this.map(App.Dog, {
person: {
embedded: 'load'
}
});
});
问题提问者编辑:
序列化程序需要在适配器中初始化.
App.adapter = DS.Adapter.create({
// ...
serializer: App.WOSerializer.create()
});
内容总结
以上是互联网集市为您收集整理的javascript – 如何在Ember-data中的一个JSON请求中加载两个模型?全部内容,希望文章能够帮你解决javascript – 如何在Ember-data中的一个JSON请求中加载两个模型?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。