1

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 config 将 find() 从复数更改为单数:

 DS.RESTAdapter.configure("plurals", {
   brand: "brand"
 });

API的编写方式,它期望的“品牌”而不是“品牌”......也许与此有关?

提前致谢。

4

1 回答 1

0

您已经声明:

不确定返回的数据集是否需要“id”参数?

是的,您猜对了,您从后端返回的数据需要一个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'
    }
  })
});

我想您的 Fixtures 定义了一个 id,因此它可以工作,对吧?

注意:您根本不需要明确定义id字段,ember 会自动将id字段添加到模型中,因此您的模型是正确的。

这里的网站仍然是 WIP,但可以作为此约定的很好参考,如其中所述:

文档必须包含一个 id 键。

这就是您的 JSON 对于记录集合的外观:

{
  "brands": [{
    "id": "1", 
    "numStyles": "1", 
    "name": "Easton", 
    "vendorId" :"6043"
  }, {
    "id": "2", 
    "numStyles": "4", 
    "name": "Siemens", 
    "vendorId": "6123"
  }/** and so on**/]
}

注意:正如您所展示的那样,您returnValue应该调用JSON 根,brand或者brands如果您不适应复数形式。请参阅此处以获取我正在谈论的 JSON 根的参考。

希望能帮助到你

于 2013-05-23T15:06:27.543 回答