我试图从我的Rails API中获取一些数据并将其显示在模板中。 如果这是一个非常愚蠢的问题,那么解释得越简单就越简单,请原谅我。
问题似乎是api数据没有正确到达模型,当我有静态夹具数据而不是服务器数据时,它可以工作。对服务器的Get请求正在进行,我得到了很好的响应,因此json移动到模型的方式肯定有问题。
routes/external/jobs.js
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.findAll('job');
}
});
models/job.js
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
id: DS.attr('string')
});
我希望我的API能够以
的形式返回数据{
"jobs": [
{
id: "jfdsa132113",
title: "developer",
type: "Job",
body: "lorem ipsum",
published_at: date,
tags: [
"some stuff",
"more stuff"
]
},
{
id: "fdsafd3432",
title: "designer",
type: "Job",
body: "lorem ipsum",
published_at: date,
tags: [
"some stuff",
"more stuff"
]
}
]
}
我的路由器
Router.map(function () {
//index route
this.route('external', function () {
this.route('jobs');
this.route('support');
});
export default Router;
答案 0 :(得分:0)
我认为你对DS.Model
有误解,你应该看看指南,特别是http://guides.emberjs.com/v2.1.0/models/finding-records/。
假设路线和模板已正确设置,且ApplicationAdapter
正在延长RESTAdapter
/ ActiveModel Adapter
- 请参阅预期的JSON格式here - ,我认为问题是在models/jobs.js
,这是不必要的。
当您执行/jobs
时,Ember数据应向store.findAll('job')
提出正确的请求。尝试删除models/jobs.js
和adapters/jobs.js
,然后执行以下操作:
// routes/external/jobs.js
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.findAll('job');
}
});
如果这不帮助您尝试发布您的路由器以及您获得的任何错误。
答案 1 :(得分:0)
假设您的模型从您的API中正常加载,我认为问题出在您的模板中。
根据文档,您需要显式访问每个模型的属性。 http://guides.emberjs.com/v2.1.0/templates/displaying-a-list-of-items/
而不是{{title}}
使用{{job.title}}
。
{{#each model as |job|}}
<a href={{job.title}}>
<div class="info">
<div class="title">{{job.body}}</div>
</div>
</a>
{{/each}}
答案 2 :(得分:0)
这解决了它
添加文件
serializers/job.js
用线
import DS from 'ember-data';
export default DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
});
我没有构建api,我注意到一些id被强调了惯例。有关详细信息,请参阅此处http://ember-doc.com/classes/DS.ActiveModelSerializer.html