1

複数の HTML 入力フィールドを同じオブザーバブルにバインドして、オブザーバブルを入力フィールドの合計にする方法は? (入力フィールドは数字のみを受け取ります)

入力フィールドごとに ko.observable を使用し、入力フィールドの合計を計算するために ko.computed を使用できることは理解していますが、任意の量の入力フィールドがある場合、これはどのように行われますか?

-ありがとう :)

4

1 に答える 1

1

任意の量の入力フィールドを使用する場合は、おそらく何らかの「アイテム コレクション」が必要です。

ItemViewModel何らかの種類を持つアイテムvalueと、それらを格納するコレクションを呼び出しitemsましょう。ko.observableArray()

コレクションをループして、コレクション内のアイテムko.computedのプロパティを合計するvalueだけなので、次のようなものが必要です。

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

    self.items = ko.observableArray([]);

    self.sum = ko.computed(function (){
        var total = 0;
        ko.utils.arrayForEach(self.items(), function(item){
            var value = parseInt(item.value());
            if (!isNaN(value))
                total += value;
        });
        return total;
    });
};

このJSFiddle でこれを試すことができます。

于 2013-07-04T20:19:43.077 に答える