【问题标题】:Computed observable does not update计算的 observable 不更新
【发布时间】:2015-10-02 21:14:12
【问题描述】:

我有一个计算出来的 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。

【问题讨论】:

  • 你是如何向数组中添加东西的?您是在实际的 observableArray 上还是在底层的原生 javascript 数组上调用 .push 等?
  • 事实证明这正是我的问题,一个愚蠢的错误,我看得太远了。谢谢!

标签: knockout.js computed-observable


【解决方案1】:

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

structure().valueSets.push(valueset);

代替:

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

感谢 James Thorpe 提醒我。

【讨论】:

    猜你喜欢
    • 2016-11-03
    • 1970-01-01
    • 2019-06-02
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 2018-09-04
    • 1970-01-01
    相关资源
    最近更新 更多