我有一个表单并使用 v-model 绑定一个输入:
<input type="text" name="name" v-model="form.name">
现在我想提取输入并使其成为自己的组件,然后如何将子组件的值绑定到父对象 form.name
?
原文由 panthro 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个表单并使用 v-model 绑定一个输入:
<input type="text" name="name" v-model="form.name">
现在我想提取输入并使其成为自己的组件,然后如何将子组件的值绑定到父对象 form.name
?
原文由 panthro 发布,翻译遵循 CC BY-SA 4.0 许可协议
在子组件中指定 :value
和 @input
事件,然后您可以在父组件中使用 v-model
语法。
我的输入.vue
<template>
<input
:value="value"
@input="$emit('input', $event.target.value)" />
</template>
<script>
export default {
props: ['value']
};
</script>
屏幕.vue
<template>
<my-input v-model="name" />
</template>
<script>
import MyInput from './MyInput.vue';
export default {
components: { MyInput },
data: () => ({
name: ''
})
};
</script>
我的输入.vue
<template>
<input
:value="modelValue"
@input="$emit('update:modelValue', $event.target.value)" />
</template>
<script>
export default {
props: ['modelValue']
};
</script>
屏幕.vue
<template>
<my-input v-model="name" />
</template>
<script>
import MyInput from './MyInput.vue';
export default {
components: { MyInput },
data: () => ({
name: ''
})
};
</script>
原文由 Cameron Wilby 发布,翻译遵循 CC BY-SA 4.0 许可协议
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
如文档中所述,
v-model
是语法糖:new Vue({ el: ‘#app’, data() { return { foo: ‘bar’ } } })
{{ foo }}
感谢 @kthornbloom 发现了先前实现的问题。
Vue 3 中的重大变化
根据文档,Vue 3 中的 v-model 实现发生了重大变化:
value
->modelValue
input
->update:modelValue