1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| import { computed } from 'vue'
| export const saulVModel = <T extends Readonly<{ [k: string]: any }>, K extends keyof T>(
| props: T,
| propName: K,
| emit: (...args: any[]) => void
| ) => {
| return computed({
| get() {
| if (typeof props[propName] === 'object') {
| return new Proxy(props[propName], {
| set(obj, name, val) {
| emit(`update:${String(propName)}`, { ...obj, [name]: val })
| return true
| }
| })
| }
| return props[propName]
| },
| set(val) {
| emit(`update:${String(propName)}`, val)
| }
| })
| }
|
|