2015-08-18 2 views
12

Verwendung der extjs-Version 5.1.3. Ich habe einen typeahead Combobox in der Form, wie unten:Combobox-Werte verschwinden bei der Eingabe

Combobox store:

Ext.define('MyApp.view.myobj.field.CustomObject', { 
    extend:'Ext.form.field.ComboBox', 
    xtype: 'cstmObject', 
    requires: [ 
     'MyApp.model.myobj.CustomObject' 
    ], 
    fieldLabel: 'Custom Object Name', 
    displayField: 'name', 
    valueField: 'name', 
    queryMode: 'remote', 
    selectOnFocus: false, 
    typeAhead: true, 
    hideTrigger: true, 
    minChars: 1, 
    queryCaching : false, 
    store:{ 
     model: 'MyApp.model.myobj.CustomObject' 
    } 
} 

Im Folgenden finden Sie Schnipsel in Form:

{ 
    xtype: 'cstmObject', 
    fieldLabel: 'Custom Object Name', 
    allowBlank: false, 
    maxLength: 5, 
    enforceMaxLength: true, 
    bind: '{customObject.row}' 
} 

auf den Wert in Combobox eingeben manchmal Drop-Down-Werte anzeigt und manchmal nicht für die Eingabe angezeigt. Wenn ich das Netzwerkfenster beobachte, wird das Laden ordnungsgemäß vom Server geladen.

Was sind mögliche clientseitige Probleme, wenn Dropdown-Werte nicht angezeigt werden, wenn der Laden ordnungsgemäß vom Server geladen wird?

Update: Ich habe ein Muster für das Problem gefunden, d. H. Wenn eine exakte Übereinstimmung des Datensatzes in der Dropdown-Liste mit dem typisierten Wert gefunden wird, verschwinden nur die Dropdown-Werte. (ZB wenn ich tippe Alphabet A und wenn es einen Datensatz mit dem Wert A dann Drop-Down-Werte verschwinden. Wenn ich tippe ein dann Drop-Down wird nicht verschwinden, da es keine Aufzeichnung mit Kleinbuchstaben ein).

Was sind die erforderlichen Konfigurationen, die ich bereitstellen muss, um dies zu beheben?

+0

Wie Sie es zeigen, sollte es funktionieren (Ich habe Ihren Code in einer [Geige ] (https://fiddle.sencha.com/#fiddle/tg7)). Vielleicht versuchen Sie, das Problem selbst in einer Geige zu reproduzieren oder Beispiel-Serverantworten für funktionierende und fehlerhafte Fälle zu veröffentlichen. Mir scheint, dass das Problem serverbezogen ist. – rixo

+0

Schau dir die Geige für Jonathan Cartwright an. Ich habe genau dasselbe in dieser Geige, bis ich einen Speicher für die Sata-Quelle für die Combobox benutzt habe. Wenn Sie es immer noch mit meiner Geige haben, lassen Sie es mich wissen. –

Antwort

4

Scheint, wie dies ein Fehler in Ext 5,1

Dies geschieht nur, wenn die Komponente an ein Modell gebunden ist.

Hier ist Fiddle dieses Problem zu reproduzieren. Geben Sie ein Sie sehen die Ergebnisse, und wenn Sie A1 (die in der Filiale vorhanden ist) eingeben, werden die Ergebnisse ausgeblendet.

eine bug in Ext 5 Forum Angemeldete

aktualisieren

Hier ein Fix ist, dass ich mit aufkam.

Ext.define('MyApp.overrides.form.field.ComboBox', { 
    override: 'Ext.form.field.ComboBox', 

    /** 
    * Fix for EXTJS-19274 
    */ 
    setValue: function(value) { 
     var me = this; 

     // This is the value used to forceSelection in assertValue if an invalid value is left 
     // in the field atcompleteEdit. Must be cleared so that the next usage of the field 
     // is not affected. 
     me.lastSelectedRecords = null; 

     // Value needs matching and record(s) need selecting. 
     if (value != null) { 
      // Only go through text/record matching if there's a change. 
      if (value !== me.getRawValue()) { 
       me.doSetValue(value); 
      } 
     } 
     // Clearing is a special, simpler case. 
     else { 
      me.suspendEvent('select'); 
      me.valueCollection.beginUpdate(); 
      me.pickerSelectionModel.deselectAll(); 
      me.valueCollection.endUpdate(); 
      me.resumeEvent('select'); 
     } 
     return me; 
    } 
}); 
3

Ich habe ExtJS Combo So:

{ 
xtype  :'combo', 
emptyText :'Pilih Client ...', 
id   :'f_client', 
store  : 'store_client', 
displayField:'longname', 
typeAhead : true, 
valueField :'nickname', 
width  : 350 
} 

und ich versuche, Daten, die ein Klein Suche oder A Versalien ist in Ordnung, so dass ich denke, dass sie bei Ihrer Server-Seite überprüfen müssen. Ursache einige Abfrage wie Orakel ist Groß-und Kleinschreibung.

column1 like '%a%' 

und

`column1 like '%A%'` 

ist anders.

3

Ext.form.field.ComboBox hat eine Eigenschaft caseSensitive, die standardmäßig false ist. Dies bedeutet, dass das Problem in Ihrem Steuerelement sein kann, aber nur, wenn diese Eigenschaft auf true festgelegt ist. Sie können Ihre Konsole (oder die Sencha-Erweiterung für Chrome) einchecken, wenn diese Eigenschaft false lautet.

Überprüfen Sie auch in Ihrem Netzwerkregister Ihrer Konsole, was an den Server gesendet wird. Wenn das Kombinationsfeld Großbuchstaben sendet, der Server jedoch Kleinbuchstaben zurückgibt, liegt das Problem auf der Serverseite.

4

Die Geige fiddle here Werke in der Art und Weise Sie mit Ausnahme möchten, dass die von Optionen aus einem Geschäft kommen beleuchtet. Was ich bemerkte, war, dass ich die Combobox direkt an einen Laden binden musste, um zu funktionieren, ohne sich nach der Eingabe von A1 zu verstecken.

Für andere Leute, die sich mit den anderen Fiddles zu diesem Thema beschäftigen, wenn Sie A1 sehr langsam eingeben, werden Sie das Verhalten nicht sehen. wenn Sie es in der gleichen Geschwindigkeit eingeben, die Sie würden, wenn Sie in der Regel einen Beitrag schreiben oder etwas, das ist, wenn die automatische Vervollständigung verschwindet mit

sehen
+0

Problem tritt auf, wenn wir es an das Modell binden. Ohne Bindung gibt es kein Problem. Guckte auf deine Geige, es ist nicht an Modell zu binden, so dass es gut funktioniert. – Awesome