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.
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%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%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.
Tags und Links knockout.js javascript html mapping ko.observablearray