计算的observable不会更新

时间:2015-07-14 09:44:44

标签: knockout.js computed-observable

我有一个计算的observable,如下所示:

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。

1 个答案:

答案 0 :(得分:0)

我需要确保在可观察数组上使用.push而不是本机javascript数组。举个例子,我应该用这个:

structure().valueSets.push(valueset);

而不是:

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

感谢James Thorpe提醒我。