Ember Data findAll()没有填充模型?

时间:2013-05-23 14:40:41

标签: json ember.js ember-data

新的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的编写方式,它期待的“品牌”而不是“品牌”......可能与此有关吗?

提前致谢。

1 个答案:

答案 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如果您没有调整复数,则应将其称为brandbrands。请参阅here以获取我正在谈论的JSON根目录的参考。

希望有所帮助