无法读取 nuxt 中空 - 错误消息的属性"标题".js



在pages文件夹下,我有一个名为"postings"的子文件夹,其中存储另一个子文件夹"_quidproquo"。最后一个子文件夹包含一个名为"index.vue"的文件。我收到一条错误消息,指出它无法读取nuxt.js代码的null属性"title"。有人能告诉我哪里出了问题吗?

<template>
<div class="single-post-page">
<section class="post">
<h1 class="post-title">
{{ loadedPost.title }}
</h1>
<div class="post-details">
<div class="post-detail">
Last updated on {{ loadedPost.updatedDate | date }}
</div>
<div class="post-detail">
Written by {{ loadedPost.author }}
</div>
</div>
<p class="post-content">
{{ loadedPost.content }}
</p>
</section>
<section class="post-feedback">
<p>Let me know what you think about the project, send an email to: <a href="mailto: blahblah@blah.com">meh@meh.com</a>.</p>
</section>
</div>
</template>
<script>
// import PostList from '@/components/Posts/PostList'
// import axios from 'axios'
export default {
middleware: 'log',
components: {
// PostList
},
asyncData (context) {
return context.app.$axios.$get('/posts/' + context.params.id + '.json')
.then((data) => {
return {
loadedPost: data
}
})
.catch(error => context.error(error))
}
}
</script>
<style scoped>
.single-post-page {
padding: 30px;
text-align: center;
box-sizing: border-box;
height:93vh;
}
.post {
width: 100%;
}
@media (min-width: 768px) {
.post {
width: 600px;
margin: auto;
}
}
.post-title {
margin: 0;
}
.post-details {
padding: 10px;
box-sizing: border-box;
flex-direction: row;
border-bottom: 3px solid #ccc;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
@media (min-width: 768px) {
.post-details {
flex-direction: row;
}
}
.post-detail {
color: rgb(88, 88, 88);
margin: 0 10px;
}
.post-feedback a {
color: red;
text-decoration: none;
}
.post-feedback a:hover,
.post-feedback a:active {
color: blue;
}
</style>

您正在调用"loadedPost"对象的"title"属性,但存在一些问题:

  1. vue实例中的计算对象或数据对象中都没有名为"loadedPost"的内容
  2. 您正在API调用中调用"loadedPost",这可能需要一段时间才能解析结果

所以这里是你可以做的:

  1. 将loadedPost定义为vue数据对象中的空对象
  2. 解析API调用时更新loadedPost

这里是演示:

vue模板:

<template>
// ...
<h1>{{ loadedPost.title }}</h1>
// ...
</template>

脚本部分:

//...
export default {
data() {
return {
loadedPost: {},
};
},
methods: {
apiCall() {
apiCallFunction().then((result) => { this.loadedPost = result });
},
},
}

这样,当loadedPost更新时,模板也会更新。

最新更新