【问题标题】:Modifying existing Knockout.js computed observable修改现有的 Knockout.js 计算的 observable
【发布时间】:2015-08-18 04:54:35
【问题描述】:

我有一个场景,如果能够更改 Knockout 计算 observable 的读取方法以更改它计算结果的方式,那将是一件好事。我尝试直接重新创建计算,但不幸的是,这使得现场停止计算。我假设完全替换计算的 observable 破坏了依赖逻辑中的幕后东西。有什么建议吗?

【问题讨论】:

  • 您遇到了代码问题,但没有提供任何代码供他人帮助。如果您可以提供一些重现问题的代码,那么有人将能够提供帮助。

标签: knockout.js


【解决方案1】:

没有办法改变计算的 observable 的“读取”函数。但是您可以在函数中使用条件并调用另一个函数:

self.xyz = ko.pureComputed(function () {
    return self.someCondition() ? self.methodA() : self.methodB();
});

您还可以让您的计算调用视图模型中的一个方法,您可以随时重新定义该方法。如果您想确保每次更新函数时都更新计算值,则应使用 observable 来存储函数:

self.methodA = ko.observable(function () { /*initial calculation*/ });

self.xyz = ko.pureComputed(function () {
    return self.methodA()();
});

// sometime later
self.methodA(function () { /*new calculation*/ });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 2014-02-05
    • 1970-01-01
    相关资源
    最近更新 更多