複数の HTML 入力フィールドを同じオブザーバブルにバインドして、オブザーバブルを入力フィールドの合計にする方法は? (入力フィールドは数字のみを受け取ります)
入力フィールドごとに ko.observable を使用し、入力フィールドの合計を計算するために ko.computed を使用できることは理解していますが、任意の量の入力フィールドがある場合、これはどのように行われますか?
-ありがとう :)
複数の HTML 入力フィールドを同じオブザーバブルにバインドして、オブザーバブルを入力フィールドの合計にする方法は? (入力フィールドは数字のみを受け取ります)
入力フィールドごとに ko.observable を使用し、入力フィールドの合計を計算するために ko.computed を使用できることは理解していますが、任意の量の入力フィールドがある場合、これはどのように行われますか?
-ありがとう :)
任意の量の入力フィールドを使用する場合は、おそらく何らかの「アイテム コレクション」が必要です。
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;
});
};