1

私は 3 つの変数を含む KnockoutJS ムーデルを持っています。A と B はどちらもオブザーバブルであり、C は次のように計算されます: A*B を返します。

ご覧のとおり、C は結果 A * B です。しかし、入力から C を変更することもできるようにしたいと考えています (これにより、C を観測可能にし、C を B で割った結果を A にします。

もう少し理にかなっています。A = 当社の通貨での金額、B は為替レートです。C は、計算された目的地の金額になります。しかし、ユーザーが私たちの通貨での金額を知らなくても、送金先の金額を知っている場合があります。私たちの通貨での金額は、観察可能なものではなく、計算する必要があります。ユーザーには、どちらか一方を計算する柔軟性が必要です。

4

1 に答える 1

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" />

フィドル

于 2012-08-31T07:27:50.893 に答える