複数の 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;
});
};