我正在尝试使用ember-data从api服务器获取数据,我将ember-data添加到ember starter-kit中。
使用
App = Ember.Application.create();
App.Router.map(function() {
// put your routes here
});
App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'emberjs/ember.js',
host : 'https://api.github.com/repos'
});
App.Store = DS.Store.extend({
adapter: 'App.ApplicationAdapter'
});
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.find('pull');
}
});
App.Pull = DS.Model.extend({
url : DS.attr(),
title : DS.attr(),
body : DS.attr()
});
为每个请求提供相同的错误。然后我尝试用github,它给出了同样的错误。
我连接的Api:Github api
处理路由时出错:index无法读取属性'length' undefined TypeError:无法读取未定义的属性“length”
答案 0 :(得分:4)
Ember在返回多个结果时需要复数的根对象,在本例中为pulls
,即
{
"pulls": [...]
}
当您使用api进行操作时,您无法控制您需要使用修改后的Serializer将数据更改为余烬预期格式,如下所示:
<强> /app/serializers/pull.js 强>
import DS from "ember-data";
export default DS.RESTSerializer.extend({
normalizePayload: function(payload) {
if(Array.isArray(payload)) {
return {"pulls": payload };
}
return payload;
}
});
有关序列化程序的信息: http://emberjs.com/api/data/classes/DS.RESTSerializer.html