如何将多个 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;
});
};
你可以在这个JSFiddle中玩这个。