模型来自Ember Data无法渲染

时间:2015-06-18 10:08:03

标签: javascript ember.js ember-data

我试图找出如何使用Ember Data获取数据并进行渲染。在遇到几个问题后,我得到了这一点,我在控制台上没有出现任何错误,但是在加载数据后存储空了。

window.App = Ember.Application.create();

App.IndexRoute = Ember.Route.extend({
  model: function(){
    return this.store.find('games');
  }
});

App.GamesModel = DS.Model.extend({
  name: DS.attr('string')
});

App.GamesAdapter = DS.RESTAdapter.extend({
  host: 'http://private-0f6a1-ember37.apiary-mock.com'
});

App.GamesSerializer = DS.RESTSerializer.extend({
  normalizePayload: function(payload){
    var result = { games: payload };
    return result;
  }
});

这是模板:

<script type="text/x-handlebars" data-template-name="index">
  <ul>
    {{#each model}}
      <li>{{name}}</li>
    {{/each}}
  </ul>
</script>

以下是CodePen上代码的链接:http://codepen.io/tarmann/pen/GJMJxq

我也尝试了不同版本的Ember Data和Ember,但没有运气。

1 个答案:

答案 0 :(得分:1)

您的问题是多元化:您指定GamesModel而不是GameModelfind games而不是game等。我将所有这些更改为与Ember期望的一致(您可以在指南中阅读更多关于Ember标准的内容)和it works, CodePen

App.IndexRoute = Ember.Route.extend({
  model: function(){
    return this.store.find('game');
  }
});

App.GameModel = DS.Model.extend({
  name: DS.attr('string')
});

App.GameAdapter = DS.RESTAdapter.extend({
  host: 'http://private-0f6a1-ember37.apiary-mock.com'
});

// https://www.youtube.com/watch?v=HL2bMjndviE
App.GameSerializer = DS.RESTSerializer.extend({
  normalizePayload: function(payload){
    var result = { games: payload };
    return result;
  }
});

App.IndexController = Ember.Controller.extend({
  init: function(){
    this.store.push('game', {
      id: 100,
      name: "Added from controller"
    });
  }
});

结果截图: enter image description here