【发布时间】:2019-06-14 19:10:25
【问题描述】:
在我的类似博客的 Vue.js 应用程序中,帖子在 v-for 循环中呈现。当每个帖子下的按钮被点击时,它的 cmets 将从服务器获取并像这样进行属性,因为 post 对象没有 comments 属性:
`this.$set(post, 'comments', res.data.comments) ;`
渲染 cmets 的代码是这样的:
<div v-for="(c, j) in post.comments" :key="j">
<span>{{c.body}}</span>
<span v-if="post.user_id==userId" @click="delComment(c, post)">Delete me!</span>
</div>
以及删除方法:
delComment(c, post) {
const payload = {
token: this.token,
cid: c.id
}
axios.delete(this.BASE_URL + "/api/comment", { data: payload } )
.then( (res)=> {
post.comments = this.post.comments.filter((comment)=>{
return comment.id != c.id
});
this.$set(post, 'comments', post.comments) ;
})
.catch( error => {
console.log(error);
});
},
但是当我单击删除链接时,我在控制台中收到此错误:
TypeError: Cannot read property 'comments' of undefined
at eval (Home.vue?76f2:540)
我该如何解决这个问题?
【问题讨论】:
标签: javascript vue.js vuejs2 axios vue-component