Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用余烬数据和sails.js返回空记录_Javascript_Ember.js_Handlebars.js_Sails.js - Fatal编程技术网

Javascript 使用余烬数据和sails.js返回空记录

Javascript 使用余烬数据和sails.js返回空记录,javascript,ember.js,handlebars.js,sails.js,Javascript,Ember.js,Handlebars.js,Sails.js,前言:我是新来恩伯的 我在中设置了一个节点服务器,并使用ember作为前端。在我的路线文件中,我有以下内容: App.ApplicationRoute = Ember.Route.extend({ model: function(){ if(window.sessionStorage.getItem('current_user_id')){ App.CurrentUser = window.sessionStorage.getItem('curre

前言:我是新来恩伯的

我在中设置了一个节点服务器,并使用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);
        }   
    }
});
它应该预加载属于当前用户的列表,以便当用户转到
#/list/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中打开余烬检查器并转到数据->应用程序列表时,它显示了4项:

Id  Name
1   
48  popcicle
49  happy dance
50  something
这破坏了我的视图,因为名称是
未定义的

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

以下是我的视图代码,以备参考:

<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>

{{partial“listNav”}
{{outlet}}
列表
    {{{#每个列表}
  • {{name}}
  • {{/每个}}
{{{#链接到“lists.new”}创建列表{{/link to}
我注意到一些事情:

  • 您的模型挂钩没有return语句()
  • 您似乎试图返回两个东西,
    user
    list
    。(可能您需要RSVP.hash:)
  • 调用store.find(type,id)将查找单个资源,而不是集合
  • /lists/:id
    响应应显示单个列表<代码>/lists应显示所有列表
  • 您使用的是
    应用程序路由器
    ,而不是
    列表(索引)路由器
    ,这可能是您想要的

所以我使用应用程序路由器,因为如果用户已经有会话,这是预加载数据。所以用户登录后会返回,如果他们的会话仍然处于活动状态,我想重新加载他们的所有列表,即使他们不在列表页面上。另外,
/lists/:id
实际上是指向
/user/:id/lists
,因为列表属于用户。