EmberJS不显示DS.RestAdapter的结果

时间:2013-05-13 17:41:44

标签: ember.js ember-data

我是EmberJS的新手,似乎无法弄清楚我的代码有什么问题。我已经阅读并比较了不同的示例项目,希望找到“缺失的链接”,所以我很欣赏第二组眼睛:

我正在使用:

  • handlebars.js 1.0.0-rc.3
  • ember-latest.js(在AWS上)
  • ember-data-latest.js(在AWS上)

流血边缘,因为我不断收到网站上的任何内容的错误。

的index.html

<script type="text/x-handlebars" data-template-name="application">
{{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="items">
  <h2>Total entries: {{length}}</h2>
  {{#if length}}
  <ul>
    {{#each item in controller}}
    <li>{{item.title}}</li>
    {{/each}}
  </ul>
  {{/if}}
</script>

app.js

window.App = Ember.Application.create({
  LOG_TRANSITIONS: true
});

// Model
App.Store = DS.Store.extend({
  revision: 12,
  adapter: DS.RESTAdapter.extend({
    bulkCommit: false,
    url:        '/api'
  })
});

App.Item = DS.Model.extend({
  id:    DS.attr('number'),
  title: DS.attr('string')
});

// Router
App.Router.map(function () {
  this.resource('items', function () {
    this.resource('item', { path: ':item_id' });
  });
});

App.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('items');
  }
});

App.ApplicationRoute = Ember.Route.extend({
  setupController: function() {
    this.controllerFor('item').set('model', App.Item.find());
  }
});

App.ItemsRoute = Ember.Route.extend({
  model: function () {
    return App.Item.find();
  }
});

// Controller
App.ItemsController = Ember.ArrayController.extend({
  sortProperties: ['title']
});

App.ItemController = Ember.ObjectController.extend({
  isEditing: false,

  editItem: function () {
    this.set('isEditing', true);
  }
});

在加载时,对/ api / items发出XHR请求,返回如下:

{"items":
  [
    {
      "id":"518c7ceeef56038b77000000",
      "title":"Test 1"
    },
    {
      "id":"518c7ceeef56038b77000001",
      "title":"Test 2"
    }
  ]
}

因此正在检索数据,但不知何故,它只是没有出现给用户!

会赞赏一些指示。谢谢!

1 个答案:

答案 0 :(得分:0)

我可以想象你的模型是错误的,如果名称是id,则不需要明确指定ember-data中的id字段。 source code中的评论内容为:

  

通过调用获取记录的主键名称        具有记录类型的序列化程序primaryKey。        除非你覆盖primaryKey方法,否则这个        将是'id'

尝试将您的模型更改为此简化版本:

App.Item = DS.Model.extend({
  title: DS.attr('string')
});

希望有所帮助