【发布时间】:2018-10-01 07:01:28
【问题描述】:
我得到了错误
TypeError:无法读取未定义的属性“名称”
如果我深入对象。
时间线.vue
<template>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="card card-default">
<div class="card-header">Timeline</div>
<div class="card-body">
<post v-for="post in posts" :key="post.id"></post>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Post from './Post.vue'
export default {
data () {
return {
posts: []
}
},
components: {
Post
},
mounted() {
this.$http.get('/posts').then((response) => {
console.log(response.body)
this.posts =response.body
})
}
}
</script>
post.vue
<template>
<div class="media">
<div class="media-left">
</div>
<div class="media-body">
<strong>test</strong>
<strong>{{ post.user.name }} </strong>
</div>
</div>
</template>
<script>
export default {
props: [
'post'
]
}
</script>
那为什么我会收到错误消息? 我想 {{ post.user.name }} 有问题。
【问题讨论】:
-
您应该发布从
/posts路由执行的代码。但是,如果我不得不猜测,您并没有加载发布用户关系。因此,您可能应该在控制器中使用急切加载Posts::with('user')->get()。当你在 PHP 中编写$post->user->name时,Laravel 会确保用户被即时加载,但如果你在控制器中返回 JSON 响应而没有加载用户,客户端 JS 代码将无法加载该关系数据。 -
添加一个帖子数组或一个帖子作为示例会有所帮助
-
是的。我检查localhost:8888/posts。它显示 [{"id":1,"user_id":1,"body":"Necessitatibus cumque pariaatur in excepturi。","created_at":"2018-04-20 07:48:56","updated_at": "2018-04-20 07:48:56","user":{"id":1,"name":"eunice","email":"eunice@gmail.com","created_at":"2018 -04-05 08:20:13","updated_at":"2018-04-05 08:20:13"}},
-
我的 post 控制器低于 public function index(Request $request, Post $post) { return $post->with(['user'])->latestFirst()->get(); }
标签: vue.js