2013-03-15 2 views
1

Я новичок в Sencha Touch2 и сталкиваюсь с проблемой при передаче данных с моего контроллера на плавучую панель в tapitem tap. Вот мой контроллер код реализации:Sencha Touch2: Передача данных с контроллера на плавающую панель не работает

Ext.define('CustomList.controller.Main', { 
    extend: 'Ext.app.Controller', 
    requires:['CustomList.view.DatePanel'], 

    config: { 
     refs: { 
      listView: 'listitems' 
     }, 

     control: { 
      'main test2 list': { 
       activate: 'onActivate', 
       itemtap: 'onItemTap' 
      } 
     } 
    }, 

    onActivate: function() { 
     console.log('Main container is active'); 
    }, 

    onItemTap: function(view, index, target, record, event) { 
     console.log('Item was tapped on the Data View'); 
     Ext.Viewport.add({ 
      xtype: 'DatePanel' 
     }); 
    } 

}); 

Am смогли получить данные в контроллере и DatePanel.js мой плавающей панели. DatePanel.js:

Ext.define('CustomList.view.DatePanel', { 
    extend: 'Ext.Panel', 
    alias: 'widget.DatePanel', 
    xtype:'datepanel', 
    config: { 
     itemid:'DatePanel', 
     modal:true, 
     centered: true, 
     hideOnMaskTap:true, 
     width:'500px', 
     height:'650px', 
     items:[ 
      { 
       styleHtmlCls:'homepage', 
       tpl:'<h4>{name3}</h4>' 

      }, 
      { 
       xtype:'toolbar', 
       docked:'bottom', 
       items:[{ 
        text:'OK', 
        ui:'confirm', 
        action:'ShowTurnOverReport', 
        listeners : { 
         tap : function() { 
          console.log('Ok'); 
         } 
        } 
       }, 
        { 
         text:'Cancel', 
         ui:'confirm', 
         action:'Cancel', 
         listeners : { 
          tap : function() { 
          console.log('Cancel'); 
          var panelToDestroy = Ext.getCmp('datepanel'); 
          panelToDestroy.destroy(); 
          Ext.Viewport.add(Ext.create('CustomList.view.Test2'));//Test.js is my list Panel 

          } 
         } 
        }] 

      } 
     ] 
    } 
}); 

помочь мне уничтожить панель на 'Отмена' кнопки. Может кто-нибудь, пожалуйста, помогите мне. Благодарю.

+0

значение использования идентификатора «DatePanel» в getCmp. – SachinGutte

ответ

2

Создать экземпляр панели, которую вы хотите добавить первым.

var floatingDatePanel = Ext.create('Yourapp.view.YourDatePanel'); 

Следующая получить данные выбранного элемента списка на itemTap

var data = record.getData(); 

Назначают эти данные floatingDatePanel с setData() методом

UPDATE,

после просмотра кода панели, Я думаю, вы хотите установить данные в первый элемент на панели, т.е.

 { 
      styleHtmlCls:'homepage', 
      tpl:'<h4>{name3}</h4>' 

     } 

Справа? Если да, то вам необходимо изменить следующий код

floatingDatePanel.setData(data); 

в

floatingDatePanel.getAt(0).setData(data); 

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

, наконец, вы можете добавить эту панель в окне просмотра с

Ext.Viewport.add(floatingDatePanel); 
+0

Спасибо. Но я не могу получить данные в своем DatePanel.js. – chipmunk

+0

добавлен DatePanel.js для справки. – chipmunk

+0

Я обновил свой ответ. Будет ясно, если вы укажете, что вы хотите с данными. Вы просто хотите отобразить его или работать с ним позже? Также опубликуйте код модели и хранилища, используемый для отображения списка. – SachinGutte

Смежные вопросы