如何使某些可观察的“独立”计算可观察(Knockout.js)

How to make 'independent' computed observable of some observable (Knockout.js)

本文关键字:观察 计算 Knockout js 何使某 独立      更新时间:2023-09-26

我有三个可观察量

viewModel.a = ko.observable(0);
viewModel.b = ko.observable(0);
viewModel.c = ko.observable(0);

我需要它们都在计算可观察的

viewModel.co = ko.computed(function(){
    var a = this.a();
    return this.b() + this.c();
}, viewModel);

如何使co仅在更新bc时才更新?
http://jsfiddle.net/DgVCF/

您可以使用

peek() 函数来获取 a 的值,而无需在计算中创建对它的依赖关系:

viewModel.co = ko.computed(function(){
    var a = this.a.peek();
    console.log(1);
    return this.b() + this.c();
}, viewModel);

另请参阅文档中的内容。

演示 JSFiddle。

似乎

更像是订阅的工作

var viewModel = {};
viewModel.a = ko.observable(0);
viewModel.b = ko.observable(0);
viewModel.c = ko.observable(0);
viewModel.co = ko.observable(0);
viewModel.b.subscribe(function(newValue) {
    viewModel.co(parseInt(viewModel.b()) + parseInt(viewModel.c()));
});
viewModel.c.subscribe(function(newValue) {
    viewModel.co(parseInt(viewModel.b()) + parseInt(viewModel.c()));
});
ko.applyBindings(viewModel);