KnockoutJS区分了可观察和计算

时间:2012-08-31 07:17:31

标签: knockout.js

我有一个包含三个变量的KnockoutJS模型:A和B都是可观察的,而C是这样的计算:返回A * B.

如你所见,C是结果A * B.但我希望能够从输入中改变C(这使得它成为一个可观察的并且A是C除以B的结果。

更有意义。 A =我们的货币金额,B是汇率。然后,C将是计算出的目的地金额。但有时用户不知道我们的货币金额,但知道目的地金额。我们的货币需求量不是要计算的,而是可观察的。我希望用户可以灵活地计算其中一个。

1 个答案:

答案 0 :(得分:1)

您可以使用读/写计算来实现此目的。这是一个例子:

查看型号:

function ViewModel() {
    var self = this;
    self.amount = ko.observable();
    self.rate = ko.observable();
    self.result = ko.computed({
        read: function() {
            if (self.amount() && self.rate())
                return self.amount() * self.rate();
        },
        write: function(value) {
            if (self.rate()) {
                self.amount(value / self.rate());
            }
        }
    });
}

var viewModel = new ViewModel();
ko.applyBindings(viewModel);

查看:

<input data-bind="value: amount" />
<input data-bind="value: rate" />
<input data-bind="value: result" />

Fiddle

相关问题