Сенсорная панель Sencha setActiveItem не работает - PullRequest
2 голосов
/ 01 октября 2011

Я создаю приложение с приложением Sencha touch.У меня есть окно просмотра в качестве карусели, и внутри этой карусели есть 2 панели.

Вторая панель в этом окне просмотра также является контейнером для 2 вложенных панелей.CategoriesList

Ext.regModel('Contact', {
    fields: ['firstName', 'lastName']
});

App.ListStore = new Ext.data.Store({
    model: 'Contact',
    sorters: 'firstName',
    getGroupString : function(record) {
        return record.get('firstName')[0];
    },
    data: [
        {firstName: 'Julio', lastName: 'Benesh'},
    ]
});

App.views.catsList = new Ext.List({
    store: App.ListStore,
    itemTpl: '<div class="contact"><div class="app_icon"><img src="images/angry-birds.png" width="50" height="50" /></div><div class="app_name"><strong>{firstName}</strong> {lastName}<br /><img src="images/rating-icon.gif" /></div></div>',
    onItemDisclosure: function(record, btn, index) {
        App.views.categories.setActiveItem(
                    App.views.categoryDetail, options.animation
                );
    }
});

App.views.CategoriesList = Ext.extend(Ext.Panel, {  
    layout: 'fit',
    items: [App.views.catsList],
    initComponent: function() {
        App.views.Categories.superclass.initComponent.apply(this, arguments);
    }
});

onItemОткрытие элементов списка инициируется.однако setActiveItem для App.views.categories не переключается на categoryDetail.Я изо всех сил пытался заставить это работать.Есть идеи, что я делаю не так?

1 Ответ

1 голос
/ 01 октября 2011

Проблема заключается в этой строке:

 App.views.categories.setActiveItem(
                App.views.categoryDetail, options.animation
            );

Вы видите, что у вас есть options объект, который не определен.Вы должны использовать это вместо:

 App.views.categories.setActiveItem(
                    App.views.categoryDetail, {type:'slide', direction:'left'}
                );

Или другой тип анимации.

У вас есть какой-нибудь журнал ошибок?Может быть, есть некоторые другие проблемы, почему это не работает.

Обновление

Добавьте это

onItemDisclosure: function(record, btn, index) { 
console.log('onItemDis fired');
try{

  Ext.dispatch({ controller: App.controllers.AppsList, action: 'show', id: record.getId(), animation: { type:'slide', direction:'left' } }); 

}catch(e){
   console.log(e);
  }
}

Затем в контроллере:

App.controllers.MyController = new Ext.Controller({ show: function(options) { 
console.log('controller called');
try{
App.views.categories.setActiveItem( App.views.categoryDetail, options.animation );
}catch(e){console.log(e);} } });

, затем вставьте консольные журналыиди сюда.

...