2017-05-25 2 views
11

Ich habe ein Tagfield, in dem ich etwas Wert lade und an den Server sende. Was ich möchte ist, wenn diese Tagfield-Komponente erneut geladen wird, sollten diese Werte automatisch ausgewählt werden. derzeit Sie sind nicht automatisch ausgewählt, aber wenn ich einen Fokus auf das Tagfeld gebe, dann kommen diese Werte wie ausgewählt.Wie man den automatischen Fokus von Tagfield auf irgendeine Bedingung setzt

Was ist der Weg, um automatisch auf bestimmte Bedingungen zu konzentrieren. Nicht die ganze Zeit.

Im Moment zeige ich nur die Daten, aber das ist nicht die richtige Art zu tun, und in IE funktioniert das nicht.

Hier ist, was ich zur Zeit

if(myField.xtype == "tagfield"){ 
     myField.xtype.setValue(myValue); 
     myField.xtype.inputEl.set({'placeholder':myValue}); 
    } 

tue, was ich will, ist

if(myField.xtype == "tagfield"){ 
     // Automatic Focus OR 
     // Someway by which I can set the value 
    } 
+0

Meinst du, du erlebst dasselbe wie [dieser Fehlerbericht] (https://www.sencha.com/forum/showthread.php?344610-Tagfield-with-createOnEnter-does-not-show-value- AfterloadRecord)? – Alexander

+0

@Alexander Ja eine ähnliche Art von. Mein Wert wird angezeigt, wenn ich auf Fokus klicke. Ich denke nur, dass es da ist. Ich kann mich konzentrieren, sobald ich geladen habe. Auch ich benutzte meinen Code, aber Platzhalter funktioniert nicht in IE. Ich habe doc eingecheckt und es gibt etwas namens 'preFocus', um die Verwendung von' Platzhalter' zu vermeiden. Aber ich bin mir nicht sicher, wie ich das ausnutzen soll. Können Sie mir bitte helfen, 'preFocus' oder etwas Ähnliches zu verwenden? – David

+0

Ich habe den Tagfield Quellcode überprüft. Bitte versuchen Sie, ob die Konfigurationsoption 'autoLoadOnValue: true' für Sie arbeitet. Es funktioniert in der Geige aus dem Fehlerbericht. – Alexander

Antwort

1

Ich gehe davon aus, dass Ihr tagfield Config-Objekt wie folgt aussehen ist.

var store = Ext.create('Ext.data.ArrayStore',{ 
fields: [ 
    'abbr', 
    'state', 
    'description', 
    'country' 
], 
data: [ 
    [0, 'AL', 'Alabama', 'The Heart of Dixie'], 
    [1, 'AK', 'Alaska', 'The Land of the Midnight Sun'], 
    [2, 'AZ', 'Arizona', 'The Grand Canyon State'], 
    [3, 'AR', 'Arkansas', 'The Natural State'], 
    [4, 'CA', 'California', 'The Golden State'], 
    [5, 'CO', 'Colorado', 'The Mountain State'], 
    [6, 'CT', 'Connecticut', 'The Constitution State'], 
    [7, 'DE', 'Delaware', 'The First State'], 
    [8, 'DC', 'District of Columbia', "The Nation's Capital"], 
    [9, 'FL', 'Florida', 'The Sunshine State'], 
    [10, 'GA', 'Georgia', 'The Peach State'], 
    [11, 'HI', 'Hawaii', 'The Aloha State'], 
    [12, 'ID', 'Idaho', 'Famous Potatoes'] 
] 
}); 

{ 
     xtype: 'tagfield', 
     fieldLabel: 'Select a state', 
     store: store, 
     reference: 'states', 
     displayField: 'state', 
     valueField: 'abbr', 
     filterPickList: true, 
     queryMode: 'local', 
} 

Durch diese Konfiguration, wenn Sie von Zuständen wie Alabama,Alaska,Arizona in Tag-Feldern auswählen, dann werden Sie Werte wie diese ['AL','AK','AZ'] weil in Tag-Feld Config Sie haben valueField: 'abbr' gesetzt bekommen und die Wert auf Server zu speichern gehen.

Nach dem Neuladen, wenn Sie diese Werte auswählen möchten, müssen Sie diese drei Werte angeben, wie sie sind. wie

if(myField.xtype == "tagfield"){//tagfield is in lower case 
     myField.setValue(['AL','AK','AZ']); // myField.setValue(myValue); 
} 

Wenn Sie noch gleiche Feld konzentrieren wollen, und wenn Sie das Tagfield Auf Lager • Morgen Fokus geladen werden, dann können Sie focus Methode der Tag-Feld verwenden.

if(myField.xtype == "tagfield"){ //tagfield is in lower case 
     myField.focus(true,true,function(){ 
     myField.getStore().load({ 
      callback: function(records, operation, success) { 
       myField.setValue(['AL','AK','AZ']);//myField.setValue(myValue);     
      } 
     }); 
    }); 
} 

Hoffe, das hilft.

Wenn Sie tagfield als Widget verwenden, dann können Sie onWidgetAttach config on widgetcolumn verwenden und Sie können Funktion angeben.

Bitte beziehen Sie sich auf link.

+0

Ok +1 für die Antwort. Aber hier ist mein 'tagfield' eine Widget-Spalte und der Laden wird nur geladen, nachdem tagfield fokussiert wurde. Lass mich den zweiten Teil deiner Antwort versuchen. – David

+0

Bitte beziehen Sie sich auf meine aktualisierte Antwort. –

+0

ist Ihr Problem zu lösen? –

Verwandte Themen