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
|
|
|
|
|
|
|
}
|