javascript - knockout : several DOM elements bound to same observable

标签 javascript mvvm knockout.js viewmodel

如何将多个 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/

相关文章:

javascript - 在 Chrome 的新选项卡中查找以前通过 window.open 打开的窗口

c# - 如何确保注入(inject)的属性更新其在 IoC 中的引用,以使所有依赖的 ViewModel 具有相同的属性实例是最新的

c# - 使用x :Bind with attached property (showing flyout)

javascript - 使用 radio 输入和 knockoutjs 选择客户地址

javascript - Durandal 中的多级路由

javascript - 类型错误和短路评估?

javascript - 在X3D模型中锁定滚动条(onmousewheel ="false")

javascript - 具有可重用事件处理程序方法的自定义元素类

android - : attribute mutableText (aka yodgorbekkomilov. edgar.footballapp :mutableText) not found. ?

knockout.js - Select2 4.0 和 Knockout 3.1 select 不允许选择