emberjs pre-4和ember-data:没有关于浏览器刷新的数据

时间:2013-01-23 23:11:10

标签: ember.js ember-data ember-router

如果我从索引浏览到游戏,则会显示数据,因为{{#linkTo}}的上下文,但是如果我正在刷新网站,则每次游戏名称都没有显示。

<小时/> 编辑:这是一个fiddle,但遗憾的是,带有灯具适配器的小提琴版本工作正常,即使ken建议从游戏模板中移除模型。


来自/ api / games的返回数据如下:

{
   "games":[
      {
         "id":1,
         "name":"First Game"
      }
   ]
}

和/ api / games / 1

中返回的数据
{
  "game": [
    {
      "id": 1,
      "name": "First Game"
    }
  ]
}
<script type="text/x-handlebars" data-template-name="application">
  {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="games">
  <ul>{{#each game in controller}}
    <li>{{#linkTo 'game' game}}{{game.name}}{{/linkTo}}</li>
  {{/each}}</ul>
</script>

<script type="text/x-handlebars" data-template-name="game">
  <h1>Name:{{model.name}}</h1>
</script>
<script type="text/javascript">
  App = Ember.Application.create();

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

  App.Store = DS.Store.extend({
    revision: 11,
    adapter: DS.RESTAdapter.create({
        namespace: 'api'
    })
  });

  App.GamesController = Ember.ArrayController.extend({
    content: []
  });

  App.GameController = Ember.ObjectController.extend({
    content: null
  });

  App.Router.map(function(match) {
    this.route("games", { path : "/" });
    this.route("game", { path : "/games/:game_id" });
  });

  App.GameRoute = Ember.Route.extend({
    model: function(params) {
        return App.Game.find(params.game_id);
    }
  });

  App.GamesRoute = Ember.Route.extend({
    setupController: function(controller) {
      controller.set('content', App.Game.find());
    }
  });
</script>

有人有想法吗?

2 个答案:

答案 0 :(得分:0)

从游戏模板中删除模型,试试这个

<script type="text/x-handlebars" data-template-name="game">
  <h1>Name:{{name}}</h1>
</script>

JS找你的代码,看看问题出在哪里

答案 1 :(得分:0)

我的服务器对单个游戏的响应是错误的。我有一个包含单个对象的数组,但是我使用了Object控制器,所以我只用响应来修复它

{
  "game": {
    "id": 1,
    "name": "First Game"
  }
}