Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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
Laravel 如何正确获取JS中的对象长度_Laravel_Vue.js - Fatal编程技术网

Laravel 如何正确获取JS中的对象长度

Laravel 如何正确获取JS中的对象长度,laravel,vue.js,Laravel,Vue.js,这些数据来自控制器,我把它放在挂载的数据中,就像这样 data() { return { forum: [], } }, mounted() { if (this.$page.forum) { this.forum = this.$page.forum; } } 我有这个数据,它很长,所以我不会张贴它所有,但应该有13条评论总数 { "id":1, "theme":"

这些数据来自控制器,我把它放在挂载的数据中,就像这样

data() {
    return {
        forum: [],
    }
},
mounted() {
    if (this.$page.forum) {
        this.forum = this.$page.forum;
    }
}
我有这个数据,它很长,所以我不会张贴它所有,但应该有13条评论总数

{ 
   "id":1,
   "theme":"werwer",
   "description":"werwer",
   "user_id":1,
   "anonymous":0,
   "start_date":"2019-12-01 06:00:00",
   "end_date":"2019-12-20 12:00:00",
   "created_at":"2019-12-04 12:00:50",
   "updated_at":"2019-12-09 08:15:47",
   "user":{ 
      "id":1,
      "name":"sadmin",
      "card":"1111",
      "scard":"123",
      "user_type_id":1,
      "email":"sadmin@gmail.com",
      "created_at":"2019-12-04 12:00:14",
      "updated_at":"2019-12-04 12:00:14"
   },
   "comments":[ 
      { 
         "id":5,
         "user_id":1,
         "discussion_forum_id":1,
         "parent_id":3,
         "comment":"Este comentario ha sido eliminado.",
         "comment_time":"2019-12-09 08:58:10",
         "deleted":1,
         "created_at":"2019-12-04 12:09:19",
         "updated_at":"2019-12-09 08:58:10",
         "user":{ 
            "id":1,
            "name":"sadmin",
            "card":"1111",
            "scard":"123",
            "user_type_id":1,
            "email":"sadmin@gmail.com",
            "created_at":"2019-12-04 12:00:14",
            "updated_at":"2019-12-04 12:00:14"
         },
         "replies":[ 
            { 
               "id":6,
               "user_id":1,
               "discussion_forum_id":1,
               "parent_id":5,
               "comment":"reply to reply",
               "comment_time":"2019-12-04 12:15:19",
               "deleted":0,
               "created_at":"2019-12-04 12:15:19",
               "updated_at":"2019-12-04 12:15:19",
               "user":{ 
                  "id":1,
                  "name":"sadmin",
                  "card":"1111",
                  "scard":"123",
                  "user_type_id":1,
                  "email":"sadmin@gmail.com",
                  "created_at":"2019-12-04 12:00:14",
                  "updated_at":"2019-12-04 12:00:14"
               }
            }
         ]
      },
   ]
}
我想得到评论的长度,所以我尝试了{{forum.comments.length}},并像这样使用它

<div v-if="forum.comments.length === 0">
    <el-card>
        <p>
          No comments!
        </p>
    </el-card>
</div>
<div v-else>
    <div v-for="comment in forum.comments">
        <el-card>
            //show comments
        </el-card>
    </div>
</div>
我怎么会犯这些错误

呈现中出错:TypeError:无法读取未定义的属性“length”

无法在处读取未定义的属性“length”


代码本身可以工作,并执行预期的操作,但始终会出现这两个错误。如何正确地执行此操作并消除这些错误?

假设您的数据是异步加载的,并且在组件渲染时不可用

解决方案是将模板包装成一个完整的forum.comments检查,以避免在加载数据之前呈现块。例如:

<template v-if="forum && Array.isArray(forum.comments)">
  <div v-if="forum.comments.length === 0">
      <el-card>
          <p>
            No comments!
          </p>
      </el-card>
  </div>
  <div v-else>
      <div v-for="comment in forum.comments">
          <el-card>
              //show comments
          </el-card>
      </div>
  </div>
</template>

数据是否来自api?在检索数据之前,forum.comments最初可能为空,但在装载数据之后,它会按照您通常所说的那样呈现。尝试v-if=forum.comments==未定义| | forum.comments.length==0请在chrisbyte+1处检查此项。警告:只有当论坛以{}作为值进行初始化,或者仍然会抛出原语类型的错误时,它才会起作用。无论如何,它是可链接的:v-if=forum&&forum.comments&&forum.comments.length==0问题不在于forum对象,而在于vue.js组件的数据初始化。您的组件代码段无权访问论坛对象。因此,您可以发布相关的vue.js组件脚本和数据模型吗。@chrisbyte我已经编辑了这个问题,添加了数据的来源