我正在考慮升級到 v3,但很失望地看到內聯模板已被刪除。因此,我正在嘗試轉換為使用作用域插槽。我定義了以下列表組件:<template> <slot :items="filteredItems" :page="page" :totalPages="totalPages" :onPageChanged="onPageChanged"></slot></template><script> export default { props: { items: { type: Array }, initialPage: { type: Number, default: 1, }, pageSize: { type: Number, default: 10 } }, beforeCreate() { this.page = this.initialPage; }, computed: { filteredItems() { return this.items.slice((this.page - 1) * this.pageSize, this.page * this.pageSize); }, totalPages() { return Math.ceil(this.items.length / this.pageSize); } }, methods: { onPageChanged(page) { console.log('Page changed!!!'); this.page = page; } } };</script>是這樣稱呼的:<list :items="[ { foo: 'A' }, { foo: 'B' }, { foo: 'C' } ]" :page-size="2" #="{ items, page, totalPages, onPageChanged }"> <ul class="list-group"> <li class="list-group-item" v-for="item in items">{{ item.foo }}</li> </ul> <pager :page="page" :total-pages="totalPages" @pageChanged="onPageChanged"></pager></list>但是,每當我嘗試更改頁面時,changePage都會調用發出pageChanged事件的方法,但它不會調用onPageChanged列表組件中的方法。如果有人能告訴我我做錯了什么,我將不勝感激。謝謝
Vue 3 - 從插槽內的子組件發出事件
梵蒂岡之花
2023-04-01 16:10:10