Knockout.js knockoutjs没有更新

Knockout.js knockoutjs没有更新,knockout.js,Knockout.js,在这个例子中,我一定遗漏了什么。有人能告诉我可能出了什么问题吗 链接: 屏幕: 更新第1行框1中的值时,下角的值不变 代码是: function revenueStream(w1, w2, w3) { var self = this; self.week1Amount = ko.observable(w1); self.week2Amount = ko.observable(w2); self.week3Amount = ko.observable(w3); }

在这个例子中,我一定遗漏了什么。有人能告诉我可能出了什么问题吗

链接:

屏幕:

更新第1行框1中的值时,下角的值不变

代码是:

function revenueStream(w1, w2, w3) {
    var self = this;
    self.week1Amount = ko.observable(w1);
    self.week2Amount = ko.observable(w2);
    self.week3Amount = ko.observable(w3);
}

function revenueStreamCategory(revenueStreams) {
    var self = this;
    self.revenueStreams = ko.observalrevenueStreams;

    self.week1Sum = ko.computed(function () {
        var sum = 0.0;

        ko.utils.arrayForEach(self.revenueStreams, function(item) {
            sum += item.week1Amount();
        });      
        return sum;
    });    
}

var rs = [];
rs.push(new revenueStream(10, 11, 12));
rs.push(new revenueStream(13, 14, 15));    
rs.push(new revenueStream(16, 17, 18));

var vm = new revenueStreamCategory(rs);      

ko.applyBindings(vm, document.getElementById("test"));​

您的问题在绑定中,请替换此:

<td><input data-bind="value: week1Amount()" /></td>

与:


这是一把小提琴:


我甚至修正了你的小计,它是连接而不是求和

@user1919252:你一次问了两个问题,但我想到了。当你制作一个observableArray时,它只是观察从数组中添加或删除项目。它不会自动使您放入数组中的任何内容可见,因此我将您的数据打包到另一个类中。如果将所有数据声明为
revenueData
对您来说过于冗长,您可以随时将代码添加到
revenueStream
类中,以便为您自动转换数字数组。谢谢,Matt。我很抱歉在这里问了两个问题。我只是想看看这里是否有人知道解决我难题的方法。我同意你关于可观测阵列的看法。使用数组可能会使其更易于扩展和初始化。考虑到我们是否需要扩展到13周,不硬编码week1Amount,week2Amount的好处是显而易见的。
<td><input data-bind="value: week1Amount" /></td>