Knockout.js knockoutjs没有更新
在这个例子中,我一定遗漏了什么。有人能告诉我可能出了什么问题吗 链接: 屏幕: 更新第1行框1中的值时,下角的值不变 代码是: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); }
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>