Sencha Touch: удаление элемента, обновление представления об изменении ориентации и т. Д.

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

  var homePanelTop = new Ext.Panel({    id:'topCont',
      cls:'topCont'    
  });
  var homePanelBtm = new Ext.Panel({
      id:'btmCont',
      cls:'btmCont'
  });


  App.views.HomeIndex = Ext.extend(Ext.Panel, {
          id:'mainlayout',
          fullscreen : true,
          layout: {
                      type: 'vbox',
                      align: 'stretch',
              },
              defaults:{flex:1},
           items: [homePanelTop, homePanelBtm],
           suspendLayout: true,
              monitorOrientation: true,
              orientationchange: this.onOrientationChange,
              onOrientationChange: function(orientation, w, h){
                  this.suspendLayout = false;
                   if(orientation === 'portrait'){
                           console.log('P: ' + orientation);
                              this.add(homePanelTop, true);
                          } else {
                           console.log('L: ' + orientation);
                              this.remove(homePanelTop, false);
                      }
                      this.doLayout();
              }
  });
  Ext.reg('HomeIndex', App.views.HomeIndex);

То, что я ожидаю увидеть в приведенном выше виде, относится к первой загрузке и портрету, будет две панели: верхняя панель (желтая) и нижняя панель (синяя). Когда я вращаюсь как обычно, я все равно получаю тот же эффект.

Но то, что я хочу, это то, что, когда я поворачиваюсь в горизонтальной плоскости, верхняя панель (желтая) удаляется, а нижняя панель (синяя) заполняет остальное пространство.

Затем, когда я поворачиваюсь назад к портрету, я возвращаю обе панели в их проектных размерах (flex:1)

Что происходит с помощью кода выше (тестирование в Chrome), так это то, что верхняя панель (желтая) остается сверху, но немного меньше по высоте и не исчезает так, как должна

В любом случае обратите внимание на две команды трассировки консоли, которые у меня есть, и они показывают следующие показания при вращении:

После первой загрузки я поворачиваюсь в альбомную ориентацию и получаю:

L: пейзаж

L: пейзаж

Попытка удалить компонент, который не существует. Ext.Container: remove принимает аргумент компонента для удаления. cmp.remove() - неправильное использование.

L: пейзаж

Попытка удалить компонент, который не существует. Ext.Container: remove принимает аргумент компонента для удаления. cmp.remove() - неправильное использование.

L: пейзаж

Попытка удалить компонент, который не существует. Ext.Container: remove принимает аргумент компонента для удаления. cmp.remove() - неправильное использование.

Когда я поворачиваюсь назад к портрету, я получаю следующий вывод:

L: пейзаж

Попытка удалить компонент, который не существует. Ext.Container: remove принимает аргумент компонента для удаления. cmp.remove() - неправильное использование.

L: пейзаж

Попытка удалить компонент, который не существует. Ext.Container: remove принимает аргумент компонента для удаления. cmp.remove() - неправильное использование.

P: портрет

P: портрет

Итак, если посмотреть на вращение lanscape, то на самом деле он показывает, как 4 раза запускает функцию onorientationchange, первый исправен, остальные три с ошибкой, так как первый уже удалил его, так что, как я полагаю, это предупреждения.

Затем с портретными я получаю два, регистрирующихся как вызовы lanscape, затем два хита, регистрирующие портретные вызовы.

Все это одним движением, так что это как-то приводит к тому, что код удаления и добавления работает не так, как предсказано, и как предотвратить четыре раза ориентацию при вращении??

Если у кого-то есть идеи по развитию этого, не стесняйтесь присоединиться.

Спасибо за помощь до сих пор Si

1 ответ

Много лет спустя... и больше для кого-то вроде меня, который наткнулся на это в поисках помощи.

Две вещи.

1) Сообщение "Попытка удалить несуществующий компонент" встречается только в "разрабатываемой" версии библиотеки ExtJS, и я не знаю, является ли это надежным индикатором проблемы.

2) Если вы можете обновить до ExtJS 4.1x. Это даст вам доступ к лучшим инструментам отладки. Я специально думаю о Ext JS Page Analyzer. Это поможет вам увидеть, что делает движок верстки в сравнении с тем, что вы надеетесь сделать.

Смотрите: http://www.sencha.com/blog/optimizing-ext-js-4-1-based-applications

Другие вопросы по тегам