如何将多个 HTML 输入字段绑定(bind)到同一个可观察对象,使可观察对象成为输入字段的总和? (输入字段仅接受数字)
我知道我可以为每个输入字段使用 ko.observable 并使用 ko.compulated 来计算输入字段的总和,但是当我将拥有任意数量的输入字段时,这是如何完成的?
-谢谢:)
最佳答案
如果您将拥有任意数量的输入字段,那么您可能会拥有某种“项目集合”。
让我们调用项目ItemViewModel
,其中它们将具有某种值
以及存储它们的集合items
,这将是一个ko.observableArray()
现在你只需要循环ko.compulated
中的集合并总结集合中项目的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. 中玩这个
关于javascript - knockout : several DOM elements bound to same observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17477116/