1

次のViewModelがあります:

function vm(model) {

    var self = this;

    var Create = function (data) {
        var order = ko.utils.extend(data, {});
        order.Price = ko.observable(data.Price);
        return order;
    }

    self.orders = ko.mapping.fromJS(model, {
        create: function (options) {
            return Create(options.data);
        }
    });

    self.FirstPrice = ko.pureComputed(function () {
        return parseFloat(self.orders()[0].Price());
    });
}

ページがロードされると、「FirstPrice」は正常に更新されますが、「orders」配列の最初の行の Price を変更した後、「FirstPrice」はページのロード後も最初の値のままです。

何が欠けている?

* 例を単純化するために、いくつかのコード行を削除しました

ありがとう

4

2 に答える 2

0

問題が見つかりました。問題は、バインドされた入力で入力マスクを使用していることです。

これには回避策があります: https://github.com/RobinHerbots/jquery.inputmask/wiki/HOWTO:-Integration-with-Knockoutjs

質問でオブザーバブルを使用した場所に HTML を配置しなかったことをお詫びします。

再度、感謝します

于 2014-10-16T01:37:45.280 に答える
0

observableArray のドキュメントを参照してください。特に、このセクション:

キーポイント: observableArray は、オブジェクトの状態ではなく、配列 内にあるオブジェクトを追跡します

于 2014-10-14T20:32:54.240 に答える