You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js 3.4.21版本组件与模型双向绑定配置失败求助

Vue 3 多v-model单HTML文件报错修复

你的代码报错核心原因是根组件未声明firstName和lastName响应式数据。子组件的props确实定义了这两个属性,但v-model绑定的是父组件(此处即根组件)的数据,根组件里没有这两个变量,导致Vue渲染时提示属性未定义。

不需要用到Vue 3.4的defineModel,单HTML文件场景直接修改根组件即可解决,完整代码如下:

<div id="app">
    <test-component v-model:first-name="firstName" v-model:last-name="lastName"></test-component>
    <!-- 可添加预览,验证双向绑定效果 -->
    <p> firstName: {{ firstName }}</p>
    <p> lastName: {{ lastName }}</p>
</div>

<script>
Vue.createApp({
    // 根组件声明响应式数据
    data() {
        return {
            firstName: '',
            lastName: ''
        }
    },
    components: {
        'test-component': {
            props: {
                firstName: String,
                lastName: String
            },
            emits: ['update:firstName', 'update:lastName'],
            template: `
                <input type="text" :value="firstName" @input="$emit('update:firstName', $event.target.value)"/>
                <input type="text" :value="lastName" @input="$emit('update:lastName', $event.target.value)"/>
            `
        }
    }
}).mount('#app');
</script>

关键改动说明

  • 在根组件的data选项中添加firstName和lastName,初始值设为空字符串(匹配props的String类型定义)
  • 子组件的props、emit和模板逻辑完全无需修改,这是Vue 3多v-model的标准写法,和单文件组件逻辑一致

内容的提问来源于stack exchange,提问作者DuhVir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:37:09