2012-04-13 5 views
0

Ich habe eine Tabelle von Werten, wo ich eine Summe auf der Zeile und Spalte brauche. Die Zeilensumme ist eine einfache computed observable und funktioniert gut, aber das Array von computed observables zum Speichern der Spaltensummen wird nicht aktualisiert.Mit Knockout, warum wird mein Array von berechneten Observablen nicht aktualisiert?

In meinem Beispiel wird das Array monthTotals beim Ändern der Werte im Grid nicht aktualisiert.

Warum werden diese Änderungen nicht aktualisiert? Sollte ich das anders machen?

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

+0

Was sollten die Zeilen zeigen, in den HTML-Code? –

+0

6000 anfänglich, aber dann sollte der Wert aktualisiert werden, wenn Sie Werte im Raster ändern – Homer

Antwort

2

Der Wert von Monthnumber in val += parseFloat(self.resourceCategories[i].monthAmounts[monthNumber].amount()); einen Blick immer auf den letzten Wert (11), weil die berechnete auswertet nach der Tat, und den letzten Wert Satz verwendet für Monatsnummer.

Hier ist eine aktualisierte jsfiddle mit dem zu einer regulären Funktion geändert berechnet werden, die zur Berechnung im Monat nimmt:

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

0

UPDATE

ich auf den Code sah einige mehr, und frage mich, was falsch ist. In der JS Geige ist das, was ich sehe:

enter image description here

Was soll es zeigen werden?

Sie sollen bei

https://github.com/ericmbarnard/KoGrid

+0

es initialisiert ok, aber wenn Sie Werte im Raster ändern, wird die Spalte insgesamt nicht aktualisiert. – Homer

1

Tuan richtig ist, warum Ihre aktuelle Verwendung von Monthnumber Problemen verursacht. Wenn Sie Ihren aktuellen Stil behalten, können Sie die MonthTotal in einem separaten Objekt kapseln, die die Monatszahl für, wenn die berechneten neu berechnet behalten würde:

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

+0

Ich mag dein Beispiel, danke! – Homer