我在项目里使用上面的方法实现了相同的功能,希望和老师分享一下~
ValidateInput.vue:
\\发出事件到父组件
onMounted(() => {
context.emit('form-item-mounted', validateInput)
})
ValidateForm.vue:
\\模板里用插槽属性暴露handler
<slot name="default" :onFormItemMounted="onFormItemMounted"></slot>
\\加入验证函数
const onFormItemMounted = (func: ValidateFunc) => {
validateFuncs.push(func)
}
Login.vue:
\\父组件里绑定事件
<template #default="{ onFormItemMounted }">
<div class="mb-3">
<label class="form-label">Email address</label>
<validate-input :rules="emailRules" v-model="emailValue" @form-item-mounted="onFormItemMounted"
type="email" placeholder="输入邮箱"></validate-input>
</div>
</template>
由于慕课没有讨论区,故发到提问区,请老师见谅~