Knockout Observable Array Länge immer 0

8

Beim Aufrufen der Länge einer Observablen im customerOverview-View-Modell erhalte ich eine Länge von Null. In den Observablen sind Daten vorhanden, da die Bindungen mit Daten aktualisiert werden, die Länge bleibt jedoch bei 0. Das Basisansichtsmodell "CustomerCentral" gibt die Längen korrekt zurück. Ich brauche die Länge einiger Observables in 'CustomerOverview', um einige bedingte Anweisungen zu geben.

HTML-Bindungen

%Vor%

JS

%Vor%

Konsole cmd: vm.customerOverview (). contacts (). length 0

--------------------------- LÖSUNG ------------------- --- observableArray.push ()

Das Problem stellte sich als diese Zeile heraus:

%Vor%

LÖSUNG: Durch das Hinzufügen von .push () konnte die length -Eigenschaft des Arrays inkrementiert werden. Ich hatte angenommen, ko.mapping würde damit umgehen, aber das tut es nicht. Das Ändern der Variablen in beobachtbar hatte keine Auswirkung.

%Vor%     
Strake 21.03.2013, 18:47
quelle

5 Antworten

1

observableArray.push ()

Das Problem stellte sich als diese Zeile heraus:

%Vor%

LÖSUNG: Durch das Hinzufügen von .push () wurde die length -Eigenschaft des Arrays inkrementiert. Ich hatte angenommen, ko.mapping würde damit umgehen, aber das tut es nicht. Das Ändern der Variable in beobachtbar hatte keine Auswirkung.

%Vor%     
Strake 21.03.2013, 20:03
quelle
6

Ich denke, Ihr Problem besteht nicht darin, dass Ihre Eigenschaft customerOverview beobachtbar ist

versuchen:

%Vor%

oder

%Vor%

Arbeitsstichprobe:

Ссылка

html

%Vor%

js

%Vor%     
roman m 21.03.2013 18:54
quelle
2
  

Knockout bietet eine Reihe von Manipulationsfunktionen für Arrays, die   Spiegeln Sie die in JavaScript gefundenen Funktionen; pop, schieben, verschieben,   Unshift, Reverse, Sortieren und Spleißen. Zusammen mit der Durchführung der   Operationen, die Sie erwarten würden, diese Array-Funktionen werden auch automatisch   Benachrichtigen Sie alle Beobachter, dass sich das Array geändert hat. Das JavaScript   Methoden werden nicht. Wenn Sie möchten, dass Ihre Benutzeroberfläche aktualisiert wird, wenn das Array zählt   ändern, Sie sollten vorsichtig sein, die Knockout-Funktionen zu verwenden.

Referenz: Ссылка

Also, im Grunde, um Ihr Problem zu lösen, müssen Sie nur die Knockout-Push-Funktion direkt auf der beobachtbaren Array anstelle der Verwendung der Javascript Push-Methode. Daher:

Ändern Sie dies:

%Vor%

Damit:

%Vor%

Und Sie können die Eigenschaft contents () .length in Ihrem HTML-Code verwenden und bei jeder Änderung im Array benachrichtigt werden.

    
José Augustinho 17.05.2016 13:34
quelle
0

Ich hatte Probleme wie diese und IIRC, weil ich in den Kommentarbedingen doppelte Gleichheitszeichen (==) anstelle von dreifachen Gleichheitszeichen (===) verwendete. Gib es eine Chance.

    
x0n 21.03.2013 18:56
quelle
0

Anstelle von:

%Vor%

Sie sollten:

%Vor%     
PetrD 07.12.2016 12:07
quelle