Fehler beim Rendern von Daten mit Javascript / KendoUI Autocomplete - Objekt #Object hat keine Methode 'Slice' - wie zu lösen?

7

Ich folge der Verwendung von Kendo UI mit MVC4 WebAPI OData und EF Artikel. Nachdem ich KendoUI installiert und sichergestellt habe, dass alle Referenzen gesetzt sind, tippe ich drei Zeichen ein und erhalte den folgenden Fehler:

  

Uncaught TypeError: Objekt # hat keine Methode 'slice'

Wurzel des Problems

Um das Lesen durch die Updates zu speichern: Durch das Debugging stellte ich fest, dass JS erwartet, ein Array zu parsen, wo es in den Daten nicht verfügbar ist - im Stammverzeichnis. In der Datenhierarchie ist es eine Ebene.

Originalproblem

Ich habe kendo.web.min.js gelöscht und der Fehler tritt um Zeile 3498 herum auf:

%Vor%

Die Kendo UI Widgets laden genauso gut wie die CSS:

%Vor%

Und ich sehe den gleichen Fehler sowohl bei der Verwendung des Razor MVC-Helfers / der Erweiterung:

%Vor%

und direkt durch JS:

%Vor%

Ich bin mir sicher, dass das etwas Einfaches ist, das ich vermisse. Ich habe sowohl mit dem Web als auch mit allen js-Dateien versucht.

Jede Hilfe wäre willkommen.

- UPDATE -

Das einzige wirkliche HTML, das in diesem Inhalt fehlt, ist <input id="userAutoComplete" />

Ich habe eine brandneue Lösung und eine sehr einfache Ansicht erstellt, basierend auf einem der Kendo-UI-Beispiele, die JSON-Daten von Ссылка erhalten, und den gleichen Fehler bekommen.

Ich dachte, dass die Verwendung der neuesten JS-Bibliothek ( //ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js könnte ein Problem verursacht haben, so dass ich die 1.7 Lib ausprobiert. Das gleiche Problem:

%Vor%

- UPDATE -

Mit dem obigen Code ging ich zurück und probierte es erneut - es funktionierte gut. Nachdem ich mehrere Male versucht habe, habe ich das gleiche Problem erlebt. Dies lag an den gültigen JSON-Daten, die sich wie folgt ändern:

%Vor%

... was mich dazu brachte, die Formatierung der Daten zu betrachten, die von meiner API kommen (in Fiddler:

)

Anstelle von:

JSON --- {... Daten ...

es ist

%Vor%

Der Fehler wird also dadurch verursacht, dass das Array nicht dort verfügbar ist, wo es erwartet wird - anstelle des Stammverzeichnisses ist es eine Ebene tief.

Wie erhalte ich eine Datenbindung an die Ein-Ebenen-Tiefe statt an die Wurzel des JSON-Objekts?

Danke.

    
ElHaix 24.07.2013, 14:00
quelle

5 Antworten

3

Die Lösung bestand darin, die Datenhierarchie zu durchlaufen, indem das Ergebnisformat beschrieben wurde.

Da das Array in $ -Werten enthalten ist, habe ich die folgende Datenquelle / Schemadefinition verwendet:

%Vor%

Eine Sache, die schön wäre, ist, einen Datenschema-Typ im Razor-Helfer hinzufügen zu können - welcher scheint nicht unterstützt zu werden Zeit .

Somit würde das Folgende immer noch nicht funktionieren:

%Vor%     
ElHaix 24.07.2013, 17:54
quelle
28

Ich hatte den gleichen Fehler mit einer ComboBox, die ich als Autocomplete verwendete. In meinem Controller war die Return-Anweisung

%Vor%

was ich in

geändert habe %Vor%

Das hat das Array auf der Stammebene anstatt einer Ebene tief für mich bereitgestellt.

    
Xanothos 15.08.2013 19:11
quelle
2

Das hat für mich funktioniert:

%Vor%

Meine Antwort war kein Array, ich habe ein Antwortobjekt vom Server zurückgegeben:

%Vor%     
brittongr 12.08.2013 19:21
quelle
0

Danke "Brittongr" ... das hat auch für mich funktioniert. aber in meinem Fall ist es nicht richtig, ich baute ein Diagramm, ein Diagramm benötigt natürlich ein Array, also anstatt das Schema zu ändern, indem ich meine Json-Daten in ein Array umwandelte, kam ich gerade von meiner Aktion eine Liste mit einem Element zurück. So etwas wie das unten.

%Vor%

Ich habe den Typ "graphicDataItem" in meinem Entities-Ordner definiert, aber er ist leicht zu verstehen, wenn man sich die Art und Weise ansieht, wie er im Code instanziiert wird.

    
El Bayames 14.07.2014 17:33
quelle
0

ich ändere dafür, und das funktioniert für mich:

%Vor%

)

    
user2929775 09.12.2015 18:19
quelle

Tags und Links