21 lines
479 B
TypeScript
Raw Normal View History

2025-04-03 18:21:17 +08:00
import { computed } from "vue";
export function useVModel(props, propsName, emit) {
return computed({
2025-04-29 13:45:43 +08:00
get() {
2025-04-03 18:21:17 +08:00
return new Proxy(props[propsName], {
get(target, key, receiver) {
return Reflect.get(target, key, receiver);
},
2025-04-29 13:45:43 +08:00
set(target, key, val) {
emit(`update:${propsName}`, { ...target, [key]: val });
2025-04-03 18:21:17 +08:00
return true;
},
});
},
2025-04-29 13:45:43 +08:00
set(val) {
2025-04-03 18:21:17 +08:00
emit(`update:${propsName}`, val);
},
2025-04-29 13:45:43 +08:00
})
2025-04-03 18:21:17 +08:00
}