敲除:绑定到同一可观察对象的几个 DOM 元素

Knockout: several DOM elements bound to same observable

本文关键字:几个 元素 DOM 对象 绑定 观察 敲除      更新时间:2023-09-26

如何将多个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中玩这个。