Knockout:绑定到同一个observable的几个DOM元素

时间:2013-07-04 19:32:17

标签: javascript mvvm knockout.js viewmodel

如何将多个HTML输入字段绑定到同一个observable,使得observable是输入字段的总和? (输入字段仅包含数字)

我知道我可以为每个输入字段使用ko.observable并使用ko.computed来计算输入字段的总和,但是当我要有任意数量的输入字段时如何完成?

- 谢谢:)

1 个答案:

答案 0 :(得分: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; }); }; 属性,因此您需要这样的内容:

{{1}}

您可以在此JSFiddle.

中使用此功能