このようなものです:Aurelia - computedFromデコレータによって参照されるネストされた配列のModifyCollectionObserverはありませんか?それでは、私のクラスを想定してみましょう
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
ゲッターのデバッガでこれを確認しました。最初にthis.myObj
がattached
に設定され、その後にsomeProperty
ゲッターが呼び出されると、myObj
はSetterObserver
がthis.__observers__
であることがわかります。
myArray
のModifyCollectionObserver
は、this.myObj.__observers__
(実際には、__observers__
のプロパティは存在しません)では表示されません。私はcomputedFrom
デコレータの依存関係として指定されているため、アレイ上に何らかのオブザーバが存在することを期待しています。あなたは、次の物事に自分のcomputedFrom
デコレータを変更することができます
'@computedFrom( 'myObj.myArray.length')'は動作しますか? –
@AshleyGrantそれはうまくいく、ありがとう!それを答えとして残しておけば、私はそれを受け入れます。しかし、私はこれを行うためのあまりハックのない方法があることを望んでいた。 –
ええ、プロキシを使用しないと、残念なことに私が知っているほどハッキリではありません。 –