我目前正在尝试使用表格和KnockoutJS工具计算总地板空间。 所有这些都已经完成,它正在计算总占地面积。
JsFiddle:http://jsfiddle.net/rmfloris/zmc0nzrr/24/
访问者最多可以添加4个不同的空间(self.ruimtes),这些空间都需要计算才能达到总楼层间距(this.totaalOppervlakte)。我已经为总的floorscacing设置了一个计算函数,并在其中设置了一个循环来遍历所有'ruimtes'。当我运行代码并使用console.log时,它似乎没有循环遍历数组,这在启动时数组为空是有意义的。但是当我通过self.ruimtes.push()函数对数组进行更改时,仍然没有发生任何事情。
this.totaalOppervlakte = ko.computed(function() {
var total = 0;
$.each(self.ruimtes, function() {
console.log('calculation')
total = total + self.Oppervlakte();
});
return total.toFixed(2);
});
知道为什么ko.computed没有按预期工作?
答案 0 :(得分:2)
您在该代码中遇到了几个问题。首先,计算出来的totaalOppervlakte超出了ViewModel的范围,因此self不等于你的想法。其次,你对$ .each的使用似乎已经过时了。我想你正在寻找更像这样的东西:
$_SESSION['Accepted']=0
主要区别是:
self.ruimte似乎是一个错字,应该是self.ruimtes
self.ruimtes是一个可以观察的淘汰赛,必须打开 - > self.ruimtes()
您缺少回调中的参数。
您可以在此处查看$ .each的正确用法: http://api.jquery.com/jquery.each/
答案 1 :(得分:0)
您正在尝试使用jQuery的数组迭代器(each
)迭代observableArray。 observableArray不是数组,包含数组。在尝试迭代之前,您需要获取数组值。
$.each(self.ruimte(), function() {
另外,不应该是self.ruimtes
?