1

是否可以使用淘汰赛 js 对这种情况进行建模?

假设我有 3 个字段:

Current Income:如果我更改此值,则Retirement Income需要更新为(Current Income * Percentage of Current Income) / 100

Retirement Income:如果我更改此值,则Percentage of Current Income需要更新为(Retirement Income/Current Income) * 100

Percentage of Current Income:如果我更改此值,则Retirement Income需要更新为(Current Income * Percentage Of Current Income) / 100

这是某种循环依赖吗?可以用knockout js建模吗?我假设所有字段都需要计算......但我不确定如何设置默认值或使用尚未声明的计算 observables。

jsfiddle 起点:http: //jsfiddle.net/LkqTU/4482/

4

1 回答 1

2

您可以使用read/write computed

var ViewModel = function() {
    var self = this;

    self.currentIncome = ko.observable(1000);
    self.currentIncomePercent = ko.observable(5);

    self.retirementIncome = ko.computed({
        read: function() {
            var result = self.currentIncome() * self.currentIncomePercent() / 100;
            return result.toFixed(2);
        },
        write: function(value) {
            var result = value / self.currentIncome() * 100;
            self.currentIncomePercent(result.toFixed(2));
        }
    });
};

ko.applyBindings(new ViewModel());

这是工作小提琴:http: //jsfiddle.net/vyshniakov/LkqTU/4503/

于 2012-10-16T08:02:32.603 回答