Сенча Touch: список setActiveItem ошибка: не удается прочитать свойство isComponent неопределенного? - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть обычный список с ' onItemDisclosure ', теперь при нажатии на элемент панель открывается нормально, но я бы хотел, чтобы эта панель помещалась во внешний файл страницы / js, а незасорение рабочей страницы кода и т. д.

У меня есть все в одном и том же файле:

  var newPanel = new Ext.Panel({
    id : 'pagedetails',
    tpl:'Show details panel'
  });
  .......
  onItemDisclosure: function(record, btn, index) {
    newPanel.update();
    App.viewport.setActiveItem('pagedetails', {type: 'slide', direction: 'left'});
}

это работает нормально, но затем я создаю его как отдельную страницу, как показано ниже.js:

 App.views.pagedetails = Ext.extend(Ext.Panel, {
id: 'pagedetails',
tpl:'Show details page'
  });

  Ext.reg('pagedetails', App.views.pagedetails);

Я загрузил это на главной странице индекса без проблем, когда я его кодирую, чтобы попытаться заставить его работать.

в моем окне просмотра initComponent: function() {... у меня есть следующее

 App.views.pagedetails = new App.views.pagedetails();
  Ext.apply(this, {
    items: [
      App.views.pagedetails
  .......etc

, затем в моем ' onItemDisclosure ' у меня есть следующее:

  App.views.pagedetails.update();
  App.viewport.setActiveItem('pagedetails', {type: 'slide', direction: 'left'}); 

затемв разделе items этой страницы

  ....
  items:[list, App.views.pagedetails];

Но это приводит к следующей ошибке:

Uncaught Попытка добавить нулевой элемент в качестве дочернего элемента контейнера с itemId / id:ext-comp-1017

Что я делаю не так или это возможно?/ мне нужно, чтобы моя подробная панель была в том же файле?

РЕДАКЦИОННЫЙ РАЗДЕЛ

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

  var detailsPanel = new Ext.Panel({
     id : 'pagedetails',
     tpl:'Show details panel'
 });

 var list = new Ext.List({
    itemTpl : App.views.showlistTpl,
    grouped : true,
     indexBar: true,
    store: 'showsStore',
    onItemDisclosure: function(record, btn, index) {
    detailsPanel.update();
    App.viewport.setActiveItem('pagedetails', {type: 'slide', direction: 'left'});
}
});


  App.views.displayList = Ext.extend(Ext.Panel, {
scroll: 'vertical',
styleHtmlContent: false,
layout: 'card',
    dockedItems: [{
      xtype: 'toolbar',
      title: 'Shows & Events'        
     }],
items: [list, detailsPanel]
  });

  Ext.reg('displayList', App.views.displayList );

Теперь я получаю ошибку:

Chrome: Uncaught TypeError: Cannotчитать свойство 'isComponent' из неопределенного

Safari: TypeError: 'undefined' не является объектом (оценивается как 'config.isComponent')

Любые идеи дляполучить базовую работу снова

ОБНОВЛЕНИЕ

У меня установлен следующий код:

  var detailPanel = new Ext.Panel({
      id: 'detailpanel',
      tpl: 'Hello',
      layout: 'card'
 });

  var listPanel = new Ext.List({
       id: 'indexlist',
       store: 'showStore',
       itemTpl: App.views.showlistTpl,
       grouped: true,
       layout:'card',
        onItemDisclosure: function(record, btn, index) {
          detailPanel.update(record.data);
          App.viewport.setActiveItem('detailPanel', {type: 'slide', direction: 'left'});
           }
         });
       App.views.showList = Ext.extend(Ext.Panel, {
             scroll: 'vertical',
             styleHtmlContent: false, 
             dockedItems: [{
             xtype: 'toolbar',
             title: 'My List'        
       }],
                items: [listPanel, detailPanel],
             layout:'card'
       });

        Ext.reg('showList', App.views.showList);

Список показывает все в порядке, но затем, когда я нажимаю на значок раскрытия, Я получаю следующую ошибку:

Uncaught TypeError: Невозможно прочитать свойство 'isComponent' неопределенного

Прошел через все, но все еще не может видеть, что не так?

, что странно (когдапопробуйте несколько вещей), когда я меняю макет «App.views.showList» на макет: «подходит», затем нажимаю на значок раскрытия, моя подробная страница отображается поверх моего списка, поэтому я получаю список и подробный вид страницытак что, похоже, это не удаляет мой список vтоесть ....?

спасибо

1 Ответ

1 голос
/ 27 сентября 2011

Не загружайте панель сведений в список элементов App.views.showList, просто используйте метод setActiveItem, который загрузит панель и сделает ее активной.

НЕ используйте xtype,но используйте экземпляр, который вы создали ранее, вот так:

onItemDisclosure: function(record, btn, index) {

          detailPanel.update(record.data);
          App.viewport.setActiveItem(detailPanel, {type: 'slide', direction: 'left'});
}
...