目前,我正在尝试使用表单和KnockoutJS工具来计算整个地板空间。所有这些都已经被设置好了,它的工作已经到了计算总楼面空间的程度。
JsFiddle:http://jsfiddle.net/rmfloris/zmc0nzrr/24/
访问者可以将4个不同的空间(self.ruimtes)相加,这些空间都需要计算才能达到总楼板间距(this.totaalOppervlakte)。我已经为总楼面间距设置了一个计算函数,并在其中设置了一个循环,以遍历所有的“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不像预期的那样工作吗?
发布于 2016-01-18 14:23:07
代码中有几个问题。首先,计算出的totaalOppervlakte不在ViewModel的范围之内,所以self并不等于您认为它所做的事情。其次,您对$.each的使用似乎已经停止。我可以想象你是在寻找更像这样的东西:
var total = 0;
$.each(self.ruimtes(), function(ruimte){
total += ruimte.Oppervlakte();
});主要的区别是:
您可以在这里查看$.each的正确用法:http://api.jquery.com/jquery.each/
发布于 2016-01-18 14:01:07
您正在尝试使用jQuery的数组迭代器( observableArray )在each上迭代。observableArray不是数组,而是包含数组。在尝试迭代之前,您需要取出数组值。
$.each(self.ruimte(), function() {而且,那不是应该是self.ruimtes吗
https://stackoverflow.com/questions/34856445
复制相似问题