移动系统liao
3 天以前 0a4e5fc3bdfca328feb574f1564011abf2a35b76
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)
    }
  })
}