【发布时间】:2021-05-02 12:23:34
【问题描述】:
使用 Vue2,我在页面上有一个书籍列表,其中详细信息通过子组件显示。用户可以从子组件中删除其中一本书。我希望列表在删除后更新。从数据库中删除记录后,我正在使用来自孩子的 $emit 。我可以从控制台看到 $emit 与有效负载中正确的新书籍列表一起发送。但是,父级中的回调函数没有被触发。我可以判断,因为我在回调开始时拥有的 console.log 没有显示在控制台中。
对我做错了什么有什么建议吗?
这是父级中的内容:
<div v-for="book in books" :key="book.BookID" @book-refresh="refreshbooks">
<BookCard :book="book" />
</div>
这里是回调函数:
async refreshbooks(newbooks) {
console.log('in books.vue, starting refreshBooks, newbooks is: ', newbooks)
this.$set(this, "books", newbooks)
.bind(this)
},
这是触发 $emit 的函数(在子组件中)中的内容:
async deleteBook(bookID) {
this.dialogdelete = false
await (EventService.deleteBook(bookID, this.user.UserID))
.then((newbooks) => {
this.$emit('book-refresh', newbooks)
}
)
},
【问题讨论】:
-
你能创建一个minimal reproducible example 像一个密码箱吗?
标签: vuejs2