Как заполнить текстовое поле значением из списка выбора в Sencha Touch? - PullRequest
0 голосов
/ 17 июля 2011

У меня есть текстовое поле и список. Я хочу заполнить текстовое поле записью из списка. Как я могу это сделать? Я делаю приложение в Sencha Touch.

Вот мой код списка:

var airports = new Ext.List({
    fullscreen: true,
    id: 'list',
    indexBar: false,
    itemTpl : '{firstName} {lastName}',
    listeners:{
       change: function() {
        var el = Ext.getDom('from'); 
        el.setValue(this.getValue())
       }

    },
    store: store

});

А вот мой код текстового поля:

{
    xtype: 'textfield',
    name : 'from',
    label: 'From',
    id: 'from',
    labelWidth: '23%',
    placeHolder: 'Search airport',
    readOnly : true,
    listeners: {'render': function(cmp) { 
            cmp.getEl().on('click', function( event, el ) {
                                NotiflyApp.views.viewport.setActiveItem('ListContainer', {type: 'fade'});
            });            
    }}
},

Ответы [ 2 ]

1 голос
/ 20 июля 2011

У меня так же, как и у вас (наверное) - список и форма - где я хочу заполнить поля элементами моего списка

Если это то, что вы хотите, вы можете попробовать это в функции onItemDisclosure:

      var dataName= record.store.data.getAt(index).data.dataName;
      var dataSurname= record.store.data.getAt(index).data.dataSurname;

Тогда в поле формы вы можете попробовать:

      Ext.getCmp('name').setValue(dataName);
      Ext.getCmp('surname').setValue(dataSurname);

Не знаю, большой ли это обходной путь, но он сработал для меня :) Надеюсь, я смогу помочь !!

1 голос
/ 19 июля 2011

Окей, поэтому мне удалось решить эту проблему, прочитав этот урок .

Вот код списка:

var fromAirports = new Ext.List({
    fullscreen: true,
    id: 'airportList',
    indexBar: false,
    itemTpl : '{airport} {IATAcode}',
    onItemTap: function(item, index) {
    var formField = NotiflyApp.views.formField;
    var selectedAirport = store.getAt(index).get('firstName');
    var selectedIATA = store.getAt(index).get('lastName');
    var from = Ext.ModelMgr.create(
        { from: selectedAirport + ' ' + selectedIATA }, 'Contact');
        NotiflyApp.views.formField.load(from);
        NotiflyApp.views.viewport.setActiveItem('formInput', {type: 'fade'});
        },

    store: store
});

Надеюсь, это поможет!Если у вас возникли проблемы с его реализацией, пожалуйста, прокомментируйте, и я постараюсь вам помочь!

...