2014-02-12 10 views
7

Ich habe eine custom kind of combo box entwickelt, die anstelle des Standard-Combo-Pickers ein Raster verwendet (hauptsächlich, um vom gepufferten Rendering mit riesigen Datensätzen zu profitieren). Ich versuche jetzt, um es mit Ext 4.2.1 kompatibel zu machen, aber ich lief in diesen Fehler:ExtJS-Debugging "[E] Layout-Test fehlgeschlagen" (in einer benutzerdefinierten Komponente)

[E] Layout run failed 

Bitte, die demo pages für Testfälle zu sehen. Der Fehler wird einmal für jedes Kombinationsfeld ausgelöst, aber nur beim ersten Mal, wenn es erweitert wird.

Dieser Fehler ist bei 4.2.0 nicht aufgetreten (siehe demo page with 4.2.0). Die brechenden Änderungen, die ich in 4.2.1 zu der Zeit identifiziert hatte, betrafen den Abfragefilter, nicht das Rendering oder das Layout ... Allerdings hatte ich bereits diesen Fehler mit 4.2.0 in einer Situation, in der der Gitterwähler in einem Fenster, aber es war in einer Code-Basis mit vielen Überschreibungen und das verwendete die Sandbox-Version von Ext4 ... Also ich hüpfte nur, es kam nicht von meiner Komponente und stummgeschaltet es (another demo page beweist, dass Grid-Picker + Fenster nicht genug ist triggert den Fehler).

Der Fehler scheint keine Nebenwirkungen zu haben, aber ich fühle mich schlecht.

Weiß jemand, was das verursacht oder, noch besser, was muss getan werden, um es zu verhindern?

Oder versteht jemand Ext's Layout-Engine gut genug, um mir einige Ratschläge zu geben, wie man diese Art von Fehler aufspüren kann? Oder geben Sie mir zumindest die Sicherheit, dass der Fehler in jeder Situation harmlos bleibt?

Antwort

23

Eigentlich war es das Grid-Panel-Layout, das fehlgeschlagen ist, weil es festgelegt wurde, seinen Inhalt zu verkleinern, aber es war kein Inhalt zum Zeitpunkt des Layouts ausgeführt. Die einfachste Möglichkeit, dies zu beheben, besteht darin, eine Breite auf dem Panel festzulegen (was Ihre Auswahl ist), so dass nicht mehr versucht wird, die Folie zu verkleinern.

meinen Pull-Request Siehe: https://github.com/rixo/GridPicker/pull/3

ich auch anstelle der Combobox Picker Feld vorschlagen würde erstreckt, hat die Combo eine Menge Dinge, die Sie wahrscheinlich nicht brauchen. Sehen Sie, wie ich damit in meinem MultiSelect umgehen konnte ux: https://github.com/nohuhu/Ext.ux.form.field.MultiSelect

+0

Vielen Dank! Darf ich fragen, wie Sie diese Schlussfolgerung so schnell erreicht haben? Mußten Sie meinen Code debuggen oder ist es Ihnen gerade aufgefallen, weil dies eine häufige Ursache für diesen Fehler ist? Vielleicht hast du auch eine Idee, warum das mit 4.2.0 nicht passiert ist? Über das Picker-Feld habe ich darüber nachgedacht, darüber zu bauen, aber ich wollte, dass die Komponente ein Drop-In-Ersatz für Combo ist, so viel wie möglich ... Und ich wollte es vermeiden, die Logik für die Abfrage und alle Combo-Optionen neu zu implementieren (zB typeAhead, forceSelection usw.). Ich habe auch heimlich gehüpft ich würde zukünftige Combo-Optionen kostenlos bekommen! – rixo

+2

Ich habe das Page-Analyzer-Beispiel verwendet, um herauszufinden, welches Layout tatsächlich fehlgeschlagen ist, und ging von dort aus. Ich habe eine Reihe von Layoutproblemen behoben, was definitiv hilft. :) Ehrlich gesagt kann ich mich nicht erinnern, was wir in 4.2.0 hatten; es war eine schrecklich buggy Release und eine Menge Dinge, die aus Versehen arbeiten. Nach 4.2.1 hat sich die Codebasis stabilisiert, aber ich empfehle wirklich, auf 4.2.2 zu aktualisieren, da es eine beträchtliche Anzahl von Korrekturen gab, die den Schnitt nicht in 4.2.1 geschafft haben. –

+0

Danke nochmal, ich kannte das Page-Analyzer Tool nicht. Ich bin wirklich froh, dass ich das nicht alleine lösen konnte! – rixo

0

Oder es gibt zwei gleiche ID in HTML verfügbar. Die ID, die Sie sein werden, rendern Ihre Komponente bereits dort.

Ich hatte ähnliches Problem und wenn ich einen von ihnen entfernte, dann erscheint "Karte".

Hoffe, dass jemand davon profitieren wird.

0

Ich habe diesen Fehler, als ich ein Ext.Tree.Panel zu einem Panel mit Rahmenlayout hinzufügen wollte. Ich fügte es als Westen hinzu und dann ein weiteres Feld im Osten. Extjs hat ausgeflippt, dass ich den Baum zu einer West- oder Ostposition hinzugefügt habe und diesen Fehler geworfen habe.

Ich habe meine Baumplatte in der Mitte Position hinzugefügt und dieses Problem ging weg.

1

ich diesen Fehler bekam, wenn (versehentlich) ich das Layout eines Panels aus geändert:

layout : fit 

zu

layout : { 
    type: 'vbox', 
    align: 'stretch' 
} 

das Panel In einigen Fällen war nur ein Element hinzugefügt und in diesem Fälle der Fehler erschien.

Hoffe, diese Informationen für jemanden nützlich sein.

Verwandte Themen