自定义 v-model 在组件上使用

136 阅读1分钟

vue2

父组件中:
<AccessMap v-model="accessNames"></AccessMap>

子组件中:
// 用于自定义组件的 v-model
model: {
  prop: 'toggledOptions',
  event: 'updateAccessNames'
},

props: {
    ...
    toggledOptions: {
      type: Array,
      default() {
        return []
      }
    }
    ...
}

当需要改变 props 值的时候触发
this.$emit('updateAccessNames', newAccessNames) 

vue3

父组件中:
<TreeTemplate v-model="selectedKeys" :treeData="treeOption.treeData.treeArr"/>

子组件中:
const props = defineProps({
	modelValue: {
		type: null,
		default() {
			return []
		}
	},
})

const emit = defineEmits(['update:modelValue'])

修改值:
emit('update:modelValue', keys)

注:在vue3中如果父组件使用ref获取子组件里面的方法或值,需要先在子组件里面导出
defineExpose({
  resetFun
})

可以通过给 v-model 指定一个参数来更改这些名字
<MyComponent v-model:title="bookTitle" />
const props = defineProps({
	title: {
		type: null,
		default: ''
	},
})

const emit = defineEmits(['update:title'])

也可以绑定多个 v-model