使用余烬数据和帆时取回空记录.js



前言:我是余烬的新手。

我在 sails 中设置了一个节点服务器.js并且我正在使用 ember 作为前端。在我的路由文件中,我有以下内容:

App.ApplicationRoute = Ember.Route.extend({
    model: function(){
        if(window.sessionStorage.getItem('current_user_id')){
            App.CurrentUser = window.sessionStorage.getItem('current_user_id');
            this.store.find('user', App.CurrentUser);
            this.store.find('list', App.CurrentUser);
        }   
    }
});

这应该是预加载属于当前用户的列表,以便在用户转到#/lists/index时,他们的所有列表都已加载。

这是我调用#/lists/:id时来自服务器的响应

{
  "lists": [
    {
      "name": "popcicle",
      "user_id": 1,
      "createdAt": "2013-12-31T05:26:39.970Z",
      "updatedAt": "2013-12-31T05:26:39.970Z",
      "id": 48
    },
    {
      "name": "happy dance",
      "user_id": 1,
      "createdAt": "2013-12-31T05:28:51.220Z",
      "updatedAt": "2013-12-31T05:28:51.220Z",
      "id": 49
    },
    {
      "name": "something",
      "user_id": 1,
      "createdAt": "2013-12-31T05:34:53.616Z",
      "updatedAt": "2013-12-31T05:34:53.616Z",
      "id": 50
    }
  ]
}

但是,当我在 chrome 中打开余烬检查器并转到 data -> App.List 时,它会显示 4 个项目:

Id  Name
1   
48  popcicle
49  happy dance
50  something

这打破了我的观点,因为名字是undefined

TL/DR 我要么需要知道为什么 ember 数据有这个空白列表以及如何摆脱它,要么需要在我的视图中进行条件迭代,以便未定义的名称不会破坏我的应用程序。

这是我的视图代码,以防有用:

<script type="text/x-handlebars" data-template-name="lists">
    <div class="left-nav">
      {{partial "listNav"}}
    </div>
    {{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="_listNav">
   <h4> Lists </h4>
    <div class="column-span2 left-nav">
        <ul> 
            {{#each list}}
            <li>
                 {{name}}
            </li>
            {{/each}}
        </ul> 
        {{#link-to "lists.new"}}Create List{{/link-to}}
    </div>
</script>

我注意到的一些事情:

  • 模型挂钩没有返回语句 (http://emberjs.com/guides/routing/specifying-a-routes-model/)。
  • 您似乎正在尝试返回两件事,userlist。(也许你需要RSVP.hash:https://github.com/emberjs/ember.js/issues/3006#issuecomment-21110139)
  • 调用store.find(type, id)将查找单个资源,而不是集合。
  • /lists/:id响应应显示单个列表。 /lists应显示所有列表。
  • 您正在使用ApplicationRouter而不是Lists(Index)Router,这可能是您想要的。

最新更新