Восстановить состояние панели Ext - PullRequest
1 голос
/ 02 июня 2011

Как восстанавливается состояние свернутой панели в Ext 4?

Я использую следующее, но оно не восстанавливается:

    var panel = Ext.create('Ext.panel.Panel', {
        id: 'panel',
        stateful: true,
        stateId: 'panelState',
        stateEvents: ['collapse', 'expand'],
        getState: function () {
            Console.log('get state' + this.collapsed);
            return {

                collapsed: this.collapsed
            }
        },
        applyState: function (state) {
            Console.log('apply state' + this.collapsed);
            if (state) {
                Ext.apply(this, state);
            }
        },
        saveState: function() {
            Console.log('save state' + this.collapsed);
            debugger;
            var me = this,
                id,
                state;
            if (me.stateful !== false) {
                id = me.getStateId();
                if (id) {
                    state = me.getState();
                    if (me.fireEvent('beforestatesave', me, state) !== false) {
                        Ext.state.Manager.set(id, state);
                        me.fireEvent('statesave', me, state);
                    }
                }
            }
        },
        height: 100,
        border: false,
        style: { zIndex: 100 },
      });

Ответы [ 2 ]

1 голос
/ 10 декабря 2012

Я использую вышеуказанные конфиги состояния для панели портала.Я хочу захватить позиции x и y после перетаскивания панели.Для этого я сделал это:

listeners : {
            'close' : Ext.bind(this.onPortletClose, this)
        },
stateEvents: ['collapse', 'expand'],
  getState: function () {                              
      return {
          collapsed: this.collapsed
      }
  },       
  getPosition: function(local) {        
        var el = this.el,xy;
    if (local === true) {return [el.getLeft(true), el.getTop(true)];
        }xy = this.xy || el.getXY();         
         if (this.floating && this.floatParent) {
           var o = this.floatParent.getTargetEl().getViewRegion();
             xy[0] -= o.left;
            xy[1] -= o.top; }
            xy[2]=this.collapsed;
             return xy;
            },          
  applyState: function (state) {                               
      if (state) {
          Ext.apply(this, state);
      }
  },
  saveState: function() {               
      debugger;          
      var me = this,
          id,
          state,pos;            
      if (me.stateful !== false) {
          id = me.getStateId();
          if (id) {
              state = me.getState();                  
              // saveAllPosition();
                 saveUserPosition();// gets fired three times. i want it only once after drag drop completed
              if (me.fireEvent('beforestatesave', me, state) !== false) {
                  Ext.state.Manager.set(id, state);
                  me.fireEvent('statesave', me, state);
              }
          }
      }
  }
1 голос
/ 09 августа 2011

Я не знаю о Ext4, но в Ext3 у нас есть для Ext.Component (и так Ext.Panel):

applyState : function(state){
    if(state){
        Ext.apply(this, state);
    }
}

Похоже, вам нужно самостоятельно восстановить коллапс, размер, положение и т. Д., Переопределив этот applyState.

Еще раз, я говорю о Ext3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...