Sencha Touch 2.x - 如何将自定义视图加载到选项卡面板?使用xtype?

时间:2012-02-17 17:11:42

标签: javascript iphone mobile extjs sencha-touch

我对Sencha 2 Touch完全不熟悉。这是我玩它的第二天。

我有一个自定义类(app / view / Howdy.js):

Ext.define('MyApp.view.Howdy', {
  extend: 'Ext.Panel',
  xtype: 'howdy', // <--- this creates the 'howdy' xtype reference right?
  requires: [
    'Ext.SegmentedButton'
  ],

  config: {
    fullscreen: true,
    html: ['Hello Word.'].join("")  
  }
});

我现在正试图在点击时将其加载到标签中:

Ext.define('MyApp.view.Main', {
   extend: 'Ext.tab.Panel',

   config: {
     fullscreen: true,
     tabBarPosition: 'bottom',

     items: [
        {
            title: 'TAB 1',
            iconCls: 'star',
            xtype: 'howdy', // <--- WHY IS THIS CRASHING MY APP?
        },
    ]
}
});

如果我删除TAB 1中的xtype声明并用html替换它一切正常。一旦我尝试将自定义视图加载到选项卡中,我得到的就是浏览器中的白色屏幕,控制台显示没有错误???

P.S是的,所有内容都已在App.js中正确设置:

views: ['Howdy','Main'],

请帮忙!

4 个答案:

答案 0 :(得分:3)

更新此线程的时间较晚,但解决方案只是从 MyApp.view.Howdy 中的配置中删除 fullscreen:true 声明。

答案 1 :(得分:1)

我希望这会对你有所帮助:

MyApp.view.Howdy

Ext.define('MyApp.view.Howdy', {
  extend: 'Ext.Container',
  xtype: 'howdy',
  requires: [
    'Ext.SegmentedButton'
  ],

  config: {
    incoCls: 'star',
    title: 'TAB 1',

    html: ['Hello Word.'].join("")  
  }
});

MyApp.view.Main

Ext.define('MyApp.view.Main', {
   extend: 'Ext.tab.Panel',

   config: {
     fullscreen: true,
     tabBarPosition: 'bottom',

     items: [
        {xclass: 'MyApp.view.Howdy'},
    ]
}
});

答案 2 :(得分:0)

您应该使用别名:widget.XTYPE

Ext.define('MyApp.view.Howdy', {
  extend: 'Ext.Panel',
  alias: 'widget.howdy', // <--- this creates the 'howdy' xtype reference right?
  requires: [
    'Ext.SegmentedButton'
  ],

  config: {
    fullscreen: true,
    html: ['Hello Word.'].join("")  
  }
});

答案 3 :(得分:0)

有几件事。首先,如果您要立即添加xtype,则使用xtype定义类型...如果您尚未使用Ext.create定义它。如果您已经创建了它,那么您不需要它。创建面板时,每个项目都包含自身,标题,图标,所有内容的所有信息。然后,只需将项目添加到tabPanel:

var a = Ext.create('Ext.Panel',{
  iconCls:'star',
  title:'tab1',
  html:'tab one content'
});
var b = Ext.create('Ext.Panel',{
  iconCls:'star',
  title:'tab2',
  html:'tab two content'
});


var panel = Ext.create('Ext.TabPanel',{
    items:[a,b]
});