0

次のような計算されたオブザーバブルがあります。

this.isActive = ko.computed<boolean>(function () {
    this.structure().valueSets();
    return this.structure().containsValueSet(this.valueSet());
}, this);

this.structure() は StructureVM クラスのインスタンスです (私は TypeScript を使用しています)。StructureVM クラス内の containsValueSet 関数は次のようになります。

containsValueSet(valueSetVM:ValueSetVM):boolean {
    var valueSet:ValueSetVM = _.find(this.valueSets(), function (valueSet:ValueSetVM) {
        if (valueSet.id === valueSetVM.id) {
            return true;
        }
    });
    return (Objects.isInstantiated(valueSet));
}

ValueSetVM (this.valueSets()) のリストで _.find を使用しています。valueSets 配列に何かが追加されても、計算された値は更新されません。何故ですか?依存関係チェーンに何か問題があると思いますか?

アンダースコアの使用によるものですか?

敬具、

DenEwout。

4

1 に答える 1

0

ネイティブの JavaScript 配列ではなく、監視可能な配列で .push を使用するようにする必要がありました。例を挙げると、これを使用する必要がありました。

structure().valueSets.push(valueset);

それ以外の:

structure().valueSets().push(valueset);

思い出させてくれたジェームズ・ソープに感謝します。

于 2015-07-14T10:45:04.537 に答える