Aurelia自定义绑定行为以观察对象的所有属性
我想创建一个自定义绑定行为,允许我检测对象属性的任何更改,如下所示:Aurelia自定义绑定行为以观察对象的所有属性,aurelia,Aurelia,我想创建一个自定义绑定行为,允许我检测对象属性的任何更改,如下所示: <my-form model.bind="myObject & objectObserver:myObjChanged()"></my-form> this.myObject = onChangeObj(this.myObject, () => this.myObjChanged()); 当绑定发生并输出控制台文本时,我看到 所以我知道它起作用了,但我不知道最好的目标是什么。我在ta
<my-form model.bind="myObject & objectObserver:myObjChanged()"></my-form>
this.myObject = onChangeObj(this.myObject, () => this.myObjChanged());
当绑定发生并输出控制台文本时,我看到
所以我知道它起作用了,但我不知道最好的目标是什么。我在targetObserver.currentValue中看到绑定对象。这是开始观看的最佳场所吗?还有其他方法可以利用Aurelia绑定引擎的现有功能吗?我找到了一个基于Javascript内置功能的非Aurelia特定的解决方案
export function onChangeObj(object, onChange) {
// creates Proxy to detect changes in object properties and call a function
if (typeof onChange !== 'function' || typeof object !== 'object') {
throw new Error('onChangeObj: incorrect parameters');
}
const handler = {
set(obj, prop, value) {
onChange(prop, value);
return Reflect.set(obj, prop, value);
},
};
return new Proxy(object, handler);
}
要使用它,只需这样称呼它:
<my-form model.bind="myObject & objectObserver:myObjChanged()"></my-form>
this.myObject = onChangeObj(this.myObject, () => this.myObjChanged());
实际上,对象被一个包装器代理替换,该代理在每次修改一个属性时(使用setter)调用提供的函数
如果有人通过Aurelia绑定行为找到解决方案,我仍然会感兴趣。可能有用吗?