P粉9165538952023-09-02 09:42:58
更新2
在setup()
函數中,您必須使用Composition API
#使用Composition API
,您可以透過setup()中獲得emit
函數。 org/api/composition-api-setup.html#setup-context" rel="nofollow noreferrer">設定上下文。
檢查我的第一個範例:
您將獲得 emit
函數
setup(props, { emit })
然後直接使用
emit("registers", getCall(toRef(param_search,'param_search')))
在您的情況下,您傳遞了設定上下文,因此您可以透過context
來呼叫emit
context.emit("registers", getCall(toRef(param_search,'param_search')))
看來您確實不需要定義自訂事件,但我仍然推薦它:
emits: ['registers']
請注意,this.$emit()
呼叫由 Options API
使用,而不是 Composition API
const { createApp, ref } = Vue;
const MyComp = {
setup(props, { emit }) {
const emitMyEvent = (event) => emit('registers', event);
return { emitMyEvent }
},
template: `<button id="my-button" @click="emitMyEvent">emit</button>`
}
const App = {
components: { MyComp },
setup() {
const getCall = (event) => console.log('getCall(): ' + event.target.id);
return { getCall }
}
}
const app = createApp(App)
app.mount('#app')
#app { line-height: 2; }
[v-cloak] { display: none; }
<div id="app" v-cloak>
<my-comp @registers="getCall"></my-comp>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
更新
與使用 this.$emit
的 Options API
相同
const { createApp, ref } = Vue;
const MyComp = {
emits: ['registers'],
methods: {
emitMyEvent: function(event) { this.$emit('registers', event) }
},
template: `<button id="my-button" @click="emitMyEvent">emit</button>`
}
const App = {
components: { MyComp },
methods: {
getCall: (event) => console.log('getCall(): ' + event.target.id)
}
}
const app = createApp(App)
app.mount('#app')
#app { line-height: 2; }
[v-cloak] { display: none; }
<div id="app" v-cloak>
<my-comp @registers="getCall"></my-comp>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>