所以让我们假设我的课程是这样的:
import { computedFrom } from 'aurelia-framework';
export class Test {
myObj;
@computedFrom('myObj.myArray')
get someProperty() {
debugger;
return JSON.stringify(this.myObj ? this.myObj.myArray : this.myObj);
}
attached() {
this.myObj = {
myArray: []
};
setTimeout(() => this.myObj.myArray.push('foo'), 500);
}
}
我的HTML只是:
<template>
<h3>myArray value: ${someProperty}</h3>
</template>
当我将元素推入someProperty
时,我遇到了myObj.myArray
未更新的问题。我使用someProperty
getter中的调试器验证了这一点。最初在this.myObj
中设置attached
并随后调用someProperty
getter时,我会在myObj
中看到SetterObserver
是this.__observers__
。< / p>
但是,我在ModifyCollectionObserver
中看不到myArray
的任何this.myObj.__observers__
(事实上,__observers__
属性甚至不存在)。我希望数组上会有某种观察者,因为它在我的computedFrom
装饰器中被指定为依赖。
答案 0 :(得分:3)
您可以将computedFrom
装饰器更改为以下内容,并且事情将开始起作用:
@computedFrom('myObj.myArray.length')
这是因为当您将项目推送到数组时,length
属性会发生变化,Aurelia可以观察到这种变化。