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绑定行为找到解决方案,我仍然会感兴趣。

可能有用吗?