新的ember js,并使用ember-data处理应用程序。如果我使用FixtureAdapter测试相同的数据,那么html模板中的所有内容都会填充。当我切换到RESTAdapter时,数据看起来好像回来了,但是模型中没有填充模型?有任何想法吗?这是代码:
App.Store = DS.Store.extend({
revision:12,
//adapter: 'DS.FixtureAdapter'
adapter: DS.RESTAdapter.extend({
url:'http://bbx-dev.footballamerica.com/builderapirequest/bat'
})
});
App.Brand = DS.Model.extend({
name: DS.attr('string'),
numStyles: DS.attr('string'),
vendorId: DS.attr('string')
});
App.BrandsRoute = Ember.Route.extend({
setupController:function(controller){
},
model:function(){
return App.Brand.find();
}
});
这是回来的数据,但没有插入到模板中!
returnValue: [{numStyles:1, name:Easton, vendorId:6043}, {numStyles:1, name:Louisville Slugger, vendorId:6075},…]
0: {numStyles:1, name:Easton, vendorId:6043}
1: {numStyles:1, name:Louisville Slugger, vendorId:6075}
2: {numStyles:1, name:Rawlings, vendorId:6109}
3: {numStyles:7, name:BWP Bats , vendorId:6496}
4: {numStyles:1, name:DeMarini, vendorId:W002}
status: "ok"
这是模板:
{{#each brand in model.returnValue }}
<div class="brand-node"{{action select brand}}>
<h2>{{brand.name}}</h2>
<p>{{brand.numStyles}} Styles</p>
</div>
{{/each}}
任何帮助将不胜感激!我没有收到任何错误,数据似乎回来了,只是没有进入模板。不确定返回的数据集是否需要“id”参数?
我也使用Store congfig将find()从复数改为单数:
DS.RESTAdapter.configure("plurals", {
brand: "brand"
});
API的编写方式,它期待的“品牌”而不是“品牌”......可能与此有关吗?
提前致谢。
答案 0 :(得分:0)
您已声明:
不确定返回的数据集是否需要“id”param?
是的,你猜对了,你从后端回来的数据需要一个id
字段集。如果id
字段名称与id
不同,您还应该在ember中定义它,如下所示:
App.Store = DS.Store.extend({
revision:12,
//adapter: 'DS.FixtureAdapter'
adapter: DS.RESTAdapter.extend({
url:'http://bbx-dev.footballamerica.com/builderapirequest/bat'
}),
serializer: DS.RESTSerializer.extend({
primaryKey: function (type) {
return '_my_super_custom_ID'; // Only needed if your id field name is different than 'id'
}
})
});
我认为你的灯具有一个id定义因此它有效,对吗?
注意:您根本不需要明确定义id
字段,ember会自动将id
字段添加到模型中,因此您的模型是正确的。
此处website仍是WIP,但可以作为此约定的良好参考 并如上所述:
文档必须包含一个id键。
这就是你的JSON对于一组记录的看法:
{
"brands": [{
"id": "1",
"numStyles": "1",
"name": "Easton",
"vendorId" :"6043"
}, {
"id": "2",
"numStyles": "4",
"name": "Siemens",
"vendorId": "6123"
}/** and so on**/]
}
注意:如您所示,JSON root被称为returnValue
如果您没有调整复数,则应将其称为brand
或brands
。请参阅here以获取我正在谈论的JSON根目录的参考。
希望有所帮助