Sencha Touch 1.1: Как получить индивидуальную запись в списке, не нажимая на список? - PullRequest
0 голосов
/ 04 ноября 2011

У меня есть список предметов, и я вставил кнопку переключения в свой список. Теперь в зависимости от значения active в магазине я пытаюсь установить значение переключателя.

Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как получить запись списка, не нажав и не выбрав ее.

Вот код ..

   var itemTemplate = new Ext.XTemplate (
       '<tpl for = ".">',
            '<div>{name}</div>',
            '<div class= "subSectionToggleButton"></div>',    
        '</tpl>'
    );


    var subSectionList = {
        height: 350,
        id: 'sList',
        xtype: 'list',
        store: App.stores.subSections,
        grouped: true,
        itemTpl: itemTemplate, //Don't need to worry about this
        listeners: {
            'refresh' : function (e) {
    //insert toggle button in empty div class inside template   
                e.getEl().select('div .subSectionToggleButton').each(function(item) {
                    var toggleButton = new Ext.form.Toggle ({
                       renderTo: item,
                       listeners : {
            // After render I want to get the individual record, read whether it is active or not.. and then do setValue(value) on toggle button
                           'afterrender' : function (f) {
                               var rec = Ext.getCmp('sList').getRecord(f);
                                console.log(rec); // I get undefined here

                // I know how to get a record when you tap a list item but how do I get without using the tap.
                           }
                       }

                    });
                });
            }
        }
    };

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Для вас будет лучше использовать условие if в вашем itemTpl или просто получить значение, определенное функцией.Итак, это будет выглядеть так:

var itemTpl = new Ext.XTemplate('<tpl for = ".">',
     '<div>{name}</div>',
     '<div class= "subSectionToggleButton">{active:this.setToggled}</div>',    
     '</tpl>',
     setToggled : function(active){
        if(active == true){             //Check the condition here
            return '<div class="active">Active</div>';
        }
        return '<div class="inactive">Inctive</div>';
     }

Или, вы можете просто использовать tpl, если условие выглядит так:

0 голосов
/ 05 ноября 2011

Для данного сценария попробуйте передать HTMLElement вместо Ext.Element в getRecord метод

var rec = Ext.getCmp('sList').getRecord(f.getEl().dom);

Также вы можете получить доступ к записям списка через list.store.findRecord http://docs.sencha.com/touch/1-1/source/Store.html#Ext-data-Store-method-findRecord

...