diff --git a/public/weigets.js b/public/weigets.js index 33a0c3a..9fa7c96 100644 --- a/public/weigets.js +++ b/public/weigets.js @@ -99,3 +99,20 @@ export function Dialog(options) { element.onremove = () => observer.disconnect() return element } + +// 深度代理, 用于监听数据的变化 +export function useProxy(obj, callback) { + return new Proxy(obj, { + get(target, key) { + if (typeof target[key] === 'object' && target[key] !== null) { + return useProxy(target[key], callback) + } + return target[key] + }, + set(target, key, value) { + target[key] = value + callback(target, key, value) + return true + } + }) +}