Sencha touch 如何在sencha中访问控制器中的ItemId

Sencha touch 如何在sencha中访问控制器中的ItemId,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,我在主视图中声明了contain。那么如何在控制器中访问。这里有democontainer和demopanel。那么如何访问它 Ext.define('MyApp.view.Main', { extend: 'Ext.Panel', alias: 'widget.mainpage', config: { width: 710, margin: '10px auto 0', itemId: 'democ

我在主视图中声明了contain。那么如何在控制器中访问。这里有democontainerdemopanel。那么如何访问它

    Ext.define('MyApp.view.Main', {
      extend: 'Ext.Panel',
      alias: 'widget.mainpage',


      config: {
        width: 710,
        margin: '10px auto 0',
        itemId: 'democontainer',
        layout: {
          type: 'hbox'
        },
        items: [
        {
          xtype:'container',
          cls:'wholeMenuWrap',
          margin: '65px 0 0 0',
          width: 175,

          items:[ 
....and
 {
    xtype: 'homepage',
    cls:'homepage-wrap',
    itemId: 'demopanel',
    layout: {
      type: 'fit'
    }
  },
  {
    xtype:'container',
    layout: 'vbox',
    margin: '65px 0 0 0',

    width: 185,
    items:[
    {
      xtype: 'titlebar',          
      cls:'roundedToolbar', 
    config: {
        main:this,
        profile: Ext.os.deviceType.toLowerCase(),

       refs:{
       myContainer: 'mainpage',
       },
        control: {
          'mainpage': {
            activate: 'onActivate',
            itemtap: 'onItemTap',
            },
'mainpage textfield[itemId=searchBox]' : {
//clear the input text box
clearicontap : 'onClearSearch',
//on every key stroke
keyup: 'onSearchKeyUp'
},
我想像这样访问控制器,但我无法访问它

    Ext.define('MyApp.view.Main', {
      extend: 'Ext.Panel',
      alias: 'widget.mainpage',


      config: {
        width: 710,
        margin: '10px auto 0',
        itemId: 'democontainer',
        layout: {
          type: 'hbox'
        },
        items: [
        {
          xtype:'container',
          cls:'wholeMenuWrap',
          margin: '65px 0 0 0',
          width: 175,

          items:[ 
....and
 {
    xtype: 'homepage',
    cls:'homepage-wrap',
    itemId: 'demopanel',
    layout: {
      type: 'fit'
    }
  },
  {
    xtype:'container',
    layout: 'vbox',
    margin: '65px 0 0 0',

    width: 185,
    items:[
    {
      xtype: 'titlebar',          
      cls:'roundedToolbar', 
    config: {
        main:this,
        profile: Ext.os.deviceType.toLowerCase(),

       refs:{
       myContainer: 'mainpage',
       },
        control: {
          'mainpage': {
            activate: 'onActivate',
            itemtap: 'onItemTap',
            },
'mainpage textfield[itemId=searchBox]' : {
//clear the input text box
clearicontap : 'onClearSearch',
//on every key stroke
keyup: 'onSearchKeyUp'
},

   onSearchKeyUp: function(searchField) {
   var container = this.up('#democontainer');
          var panel = container.down('#demopanel');
          panel.removeInnerAt(0);
          var submitWordBySearch = { xtype: 'searchplusfav' }; 
          panel.insert(0, submitWordBySearch);
我得到这个错误:

Uncaught TypeError: Object [object global] has no method 'up' 
任何人都请帮帮我

我添加了新代码:

Uncaught TypeError: Object [object global] has no method 'demoContainer2' 
  onKeySubmitTap: function(dataview, index, target, record, e, options) 
  {
    var container = dataview.up('#democontainer');
    var panel = container.down('#demopanel');
    panel.removeInnerAt(0);
    var submitWordBySearch = { xtype: 'categorywordsdisplay' }; 
    panel.insert(0, submitWordBySearch);
  }
获取错误:

Uncaught TypeError: Object [object global] has no method 'demoContainer2' 
  onKeySubmitTap: function(dataview, index, target, record, e, options) 
  {
    var container = dataview.up('#democontainer');
    var panel = container.down('#demopanel');
    panel.removeInnerAt(0);
    var submitWordBySearch = { xtype: 'categorywordsdisplay' }; 
    panel.insert(0, submitWordBySearch);
  }
工作代码:

Uncaught TypeError: Object [object global] has no method 'demoContainer2' 
  onKeySubmitTap: function(dataview, index, target, record, e, options) 
  {
    var container = dataview.up('#democontainer');
    var panel = container.down('#demopanel');
    panel.removeInnerAt(0);
    var submitWordBySearch = { xtype: 'categorywordsdisplay' }; 
    panel.insert(0, submitWordBySearch);
  }
在控制器中使用
this.up()
实际上不会做任何事情。要获取对democontainer的引用,您首先应该意识到在类的
config
中声明
itemId
是没有用的;这实际上应该在声明类实例时完成。您基本上已经有了对
#democontainer
的引用,因为这两个与您当前的类配置等效:

refs: {
    demoContainer1: 'mainpage',
    demoContainer2: '#democontainer' //same as demoContainer1
}
因此,使用您已经拥有的
ref
,为了稍后在控制器中获得该引用,您只需使用
this.getMyContainer()


我为我自己的问题添加了这个,这正是我的工作:

 var container = Ext.Viewport.up('#democontainer');
  var panel = Ext.Viewport.down('#demopanel');
  panel.removeInnerAt(0);
  var submitWordBySearch = { xtype: 'submitnewdefinitionholder' }; 
  panel.insert(0, submitWordBySearch);

感谢您的回复,但我无法设置为面板。removeInnerAt(0);var submitWordBySearch={xtype:'searchplusfav'};面板。插入(0,按搜索提交);。。。请注意我编辑的问题。好的,谢谢,但我仍然收到这些类型的错误。未捕获类型错误:对象[Object global]没有方法'getDemoContainer2'AutoSearchFinal.js?_dc=1376568704064:235(匿名函数)AutoSearchFinal.js?_dc=1376568704064:235 show.fn