如果要绑定的值是一个对象,可以使用对象的引用来实现双向绑定。在父组件中,将对象作为一个属性传递给子组件,并使用 v-model
来绑定子组件中的输入框。当子组件中的输入框发生变化时,父组件中的对象也会随之更新。以下是一个示例代码:
<!-- ParentComponent.vue --> <template> <div> <ChildComponent v-model="value"></ChildComponent> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { value: { firstName: '', lastName: '' } }; } }; </script>
<!-- ChildComponent.vue --> <template> <div> <input v-model="internalValue.firstName" type="text"> <input v-model="internalValue.lastName" type="text"> </div> </template> <script> export default { props: ['value'], data() { return { internalValue: this.value }; }, watch: { value(newValue) { this.internalValue = newValue; }, internalValue(newValue) { this.$emit('input', newValue); } } }; </script>
如果要绑定的值是一个对象,可以使用对象的引用来实现双向绑定。在父组件中,将对象作为一个属性传递给子组件,并使用 v-model 来绑定子组件中的输入框。当子组件中的输入框发生变化时,父组件中的对象也会随之更新。以下是一个示例代码:
<!-- ParentComponent.vue -->
<template>
<div>
<ChildComponent v-model="value"></ChildComponent>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
data() {
return {
value: {
firstName: '',
lastName: ''
}
};
}
};
</script>
<!-- ChildComponent.vue -->
<template>
<div>
<input v-model="internalValue.firstName" type="text">
<input v-model="internalValue.lastName" type="text">
</div>
</template>
<script>
export default {
props: ['value'],
data() {
return {
internalValue: this.value
};
},
watch: {
value(newValue) {
this.internalValue = newValue;
},
internalValue(newValue) {
this.$emit('input', newValue);
}
}
};
</script>
<!-- ParentComponent.vue -->
<template>
<div>
<ChildComponent :rules="validationRules" @ready="onChildReady"></ChildComponent>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
data() {
return {
validationRules: {
required: true,
minLength: 5
}
};
},
methods: {
onChildReady() {
// 子组件已准备好,可以执行相应的操作
}
}
};
</script>
<!-- ChildComponent.vue -->
<template>
<div>
<!-- 子组件的逻辑 -->
</div>
</template>
<script>
export default {
props: {
rules: {
type: Object,
required: true
}
},
mounted() {
// 子组件准备好后,可以使用传递的校验规则
this.$emit('ready');
}
};
</script>