use proxy to intercept view's property

This commit is contained in:
pengfei.zhou
2019-07-16 21:05:48 +08:00
parent de08866eb4
commit 50b9158ce7
6 changed files with 39 additions and 35 deletions

View File

@@ -1,24 +1,3 @@
export interface IWatcher {
onPropertyChanged(propKey: string, oldV: any, newV: any): void
}
export function Property(target: IWatcher, propKey: string) {
const key = Symbol(propKey)
Reflect.defineProperty(target, propKey, {
configurable: false,
enumerable: true,
get: () => {
return Reflect.get(target, key)
},
set: (v: any) => {
const oldV = Reflect.get(target, key)
Reflect.set(target, key, v)
target.onPropertyChanged(propKey, oldV, v)
}
})
}
export interface Modeling {
toModel(): Model
}