Обновление экрана при переключении карты в сенсорном сенча - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть экран, где formBase содержит все динамически созданные элементы управления пользовательского интерфейса.Я использую макет карты и переключаюсь между представлениями.Теперь так получилось, что я должен выполнять formBase каждый раз, когда карта переключается (я имею в виду каждый раз, когда появляется мой экран).

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

var formBase = new Ext.form.FormPanel({
        scroll: 'vertical',
        ui: 'round',
        items: [fieldSet, {
            xtype : 'fieldset',
            items : [ item1, item2, item3]
            ]
        }],
         listeners: {
            beforerender: function(ele) {
               console.log(" Screen before render");
               initScreenComps()
            },

            beforeshow: function(ele) {
                console.log(" screen before show");

            }
        }
    });

Редактировать: 1

У меня есть файл viewport.js, где у меня есть метод открытия, чтобы изменить область просмотра.вот код ниже Viewport.js.Тем не менее это не имеет никакого эффекта.Просьба предложить.

MyApp.views.Viewport = Ext.extend(Ext.Panel, {
    fullscreen: true,
    layout: 'card',
    initComponent: function() {
        Ext.apply(this, {

            items: [
                { xtype: 'MyApp.views.view1', id: 'view1' },
                { xtype: 'MyApp.views.view2', id: 'view2' },
                { xtype: 'MyApp.views.view3', id: 'view3' },
                { xtype: 'MyApp.views.view4', id: 'view4' },
                { xtype: 'MyApp.views.view5', id: 'view5' }             
            ],
        listeners:{
           beforecardswitch:function(newCard, oldCard, index, animated){
                 //do something...
               console.log(" Card switched"  + " New " + newCard + " OLD : " + oldCard + " index + " index);
           }
        }
        }
        );
        MyApp.views.Viewport.superclass.initComponent.apply(this, arguments);
    },

    // used for changing view port of application
    reveal: function(target) {      
        this.setActiveItem(MyApp.views[target],{ type: 'slide', direction: 'right' }
        );
    }
});

А теперь я вызываю view2 из контроллера, при нажатии кнопки.

MyApp.views.viewport.reveal('view2');

Ответы [ 2 ]

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

Думаю, будет лучше, если вы используете для этого «beforeactivate» или «activit» слушатели событий. Эти события запускаются всякий раз, когда макет карты устанавливает этот элемент в качестве активного элемента. Итак, код будет таким:

var formBase = new Ext.form.FormPanel({
        scroll: 'vertical',
        ui: 'round',
        items: [fieldSet, {
            xtype : 'fieldset',
            items : [ item1, item2, item3]
            ]
        }],
         listeners: {
            beforeactivate: function(panel) {
               console.log(" Screen before render");
               initScreenComps()
            }
        }
    });
0 голосов
/ 03 ноября 2011

Вы должны прослушать событие beforecardswitch.например

listeners:{
   beforecardswitch:function(newCard, oldCard, index, animated){
 //do something...
   }
}
...