Uncaught TypeError: grid.sortedData.peek (...) .filter ist keine Funktion

8

Ich versuche Paging mit dem KnockoutJs KOGrid zu machen. Ich habe folgendes verfolgt: Ссылка

Die Daten, die ich in mein Ansichtsmodell (den vm-Parameter) übergebe, enthalten Folgendes:

Mein Knockout-Modell ist wie folgt:

%Vor%

Andy meine html (Asp.Net MVC Razor Ansicht) ist:

%Vor%

Wenn die Seite geladen wird, wird der folgende Fehler innerhalb von kogrid.js ausgelöst Uncaught TypeError: grid.sortedData.peek (...). filter ist keine Funktion

%Vor%

Wenn ich die Eigenschaft sortedData des -Grids -Objekts überprüfe, sieht es in Ordnung aus:

Die letzte Zeile meines Knockout-Viewmodels js, das ausgeführt werden soll, ist self.myData (pagedData); innerhalb der Funktion this.SetPagingData .

Mit Fiddler habe ich folgendes aus der Antwort vom Server gezogen:

%Vor%

Wo bin ich falsch gelaufen?

    
Rob Bowman 07.03.2016, 18:07
quelle

1 Antwort

5

Sie geben eine ko.observableArray -Eigenschaft ( myData ) korrekt als data -Parameter des gridOptions -Objekts an, jedoch müssen Sie sicherstellen, dass sie immer ein JavaScript-Array enthält.

Knockout überprüft nicht, was Sie in ko.observableArray eingegeben haben. Sie müssen also sicherstellen, dass Sie immer Arrays verwenden.

In deinem setPagingData versuchst du jedoch, deinem myData anstelle eines Arrays ein Objekt zuzuweisen, das diesen Fehler verursacht:

  

Uncaught TypeError: grid.sortedData.peek (...). filter ist keine Funktion

weil eine einfache JavaScript-Objektbibliothek keine filter -Funktion hat.

Die Korrektur ist ziemlich einfach, Sie müssen nur pagedData.Rows als Wert von myData übergeben:

%Vor%

Nebenbemerkung: Ihre aktuelle Implementierung führt kein ordnungsgemäßes serverseitiges Paging durch. Weil Sie keine Parameter an den Server übergeben und die zurückgegebenen Daten auf der Clientseite verarbeiten.

    
nemesv 15.03.2016, 20:15
quelle

Tags und Links