使用Knockout,为什么我的计算可观察数组不会更新?

时间:2012-04-13 20:06:57

标签: knockout.js

我有一个值表,我需要行和列的总计。行总数是一个简单的computed observable并且工作正常,但用于存储列总计的computed observables数组不会更新。

在我的示例中,当更改网格中的值时,monthTotals数组不会更新。

为什么这些更改不会更新?我应该这样做吗?

http://jsfiddle.net/MYMtH/5/

3 个答案:

答案 0 :(得分:2)

val += parseFloat(self.resourceCategories[i].monthAmounts[monthNumber].amount());中monthNumber的值始终设置为其最后一个值(11),因为计算结果在事后计算,并使用为monthNumber设置的最后一个值。

这是一个更新的jsfiddle,计算结果已更改为常规函数,需要计算月份:

http://jsfiddle.net/MYMtH/7/

答案 1 :(得分:1)

Tuan对于你当前使用monthNumber导致问题的原因是正确的。如果要保留当前样式,可以将MonthTotal封装在一个单独的对象中,该对象将保留计算重新计算时的月份数:

http://jsfiddle.net/jearles/MYMtH/8/

答案 2 :(得分:0)

更新

我更多地看了你的代码,我想知道出了什么问题。在JS小提琴中,这就是我所看到的:

enter image description here

它应该展示什么?

你应该看看

https://github.com/ericmbarnard/KoGrid