Как сделать автоматическую фокусировку тегов в каком-либо состоянии

У меня есть tagfield, в котором я загружаю определенное значение и отправляю серверу. Я хочу, чтобы снова перезагрузить компонент тега, это значение должно быть автоматически выбрано. в настоящее время они не выбираются автоматически, но если я даю фокус тегу, тогда эти значения будут выбраны.

Каким образом можно автоматически сфокусироваться на каком-либо состоянии. Не все время.

Сейчас я просто показываю данные, но это неправильный способ сделать, и в IE это не работает.

Вот что я делаю в настоящее время

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

Я хочу

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

Ответ 1

Я предполагаю, что ваш объект конфигурации tagfield выглядит следующим образом.

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 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',
}

В этой конфигурации, если вы выбираете состояния типа Alabama,Alaska,Arizona в полях тегов, вы получите значение, подобное этому ['AL','AK','AZ'], потому что в настройке поля тега вы установили valueField: 'abbr', и это значение будет отправлено на сервер для сохранения.

После перезагрузки, если вы хотите выбрать эти значения, вы должны дать эти три значения, как есть. как

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

Если вы все же хотите сфокусировать одно и то же поле, и если вы загружаете хранилище тегов в фокусе, вы можете использовать метод тега focus.

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);                   
          }
       });
    }); 
}

Надеюсь, что это поможет.

Если вы используете tagfield как виджет, вы можете использовать onWidgetAttach config на widgetcolumn, и вы можете указать функцию на нем.

Обратитесь ссылка.