EXTJS4.x之实战项目(3)菜单控制器MenuPanelController

上次我们完成了菜单界面的制作。接下来来我们来做响应事件。

1.添加Conroller,如下图添加一个Controller


设置userClassName为MenuPanelController

添加四个函数(Functions),添加方法如下图


init无参数;

getTab参数为 viewName;

onItemClick参数为 view,record,item,index,e,eOpts

openTab参数为 panel,id


2.为MenuPanelController添加view如下图


3.编写MenuPanelController的init函数

在init函数中进行事件的绑定,打开init函数编辑界面输入以下内容

this.control(
    {
        'BaseContentManager':
        {
            itemclick:this.onItemClick
        },
        'SectionManager':
        {
            itemclick:this.onItemClick
        }
    }
);

如下图


分别设置BaseContentManager和SectionManager的userAlias为BaseContentManager和SectionManager。

编辑onItemClick函数,输入以下内容

alert(record.get('text'));

此时运行一下,效果如下图所示:


此时的菜单点击事件可以正常响应到。


4.根据点击的内容创建内容在中间容器显示

这部分比较复杂:

1)修改onItemClick函数内容为:

if(record.get('leaf')){
    var panel = Ext.getCmp(record.get('id')); 
    if(!panel)
    { 
        panel =
        { 
            title: record.get('text'), 
            iconCls: 'tabs', 
            items:[this.getTab(record.get('view'))], 
            closable: true 
        };
        this.openTab(panel,record.get('id'));
    }else{
        var main = Ext.getCmp("CenterTabPanel");
        main.setActiveTab(panel); 
    }
}

代码的作用是获取点击的id,通过id查找panel,如果存在则激活,如果不存在则通过view属性的值创建panel。

2)编辑getTab函数内容为:

var pnContent = Ext.create(viewName, {});
//debugger;
try{
    pnContent.getStore().reload();
}catch (e) {

}finally{
    return pnContent;
}

代码作用为创建panel并加载数据源

3)编写openTab函数内容为:

var o = (typeof panel == "string" ? panel : id || panel.id);
var main = Ext.getCmp("CenterTabPanel");
var tab = main.child('panel[id='+o+']');      
if (tab) 
{
    main.setActiveTab(tab); 
} 
else if(typeof panel!="string")
{ 
    panel.id = o; 
    var p = main.add(panel);
    //alert(main.getXTypes());
    main.setActiveTab(p); 
} 

代码作用是激活窗口

4)创建ArticleGridPanel, MediaGridPanel,SectionGridPanel,SectionContentGridPanel四个GridPanel视图。步骤是拖动一个GridPanel到工作空间的views分组下。设置属性userClass和title,删除width和height属性

userClass分别设置为:ArticleGridPanel, MediaGridPanel,SectionGridPanel,SectionContentGridPanel

userAlias分别设置为:ArticleGridPanel, MediaGridPanel,SectionGridPanel,SectionContentGridPanel

title分别为:文章资源管理,媒体资源管理,栏目管理,栏目内容管理;

整个工程如下图所示



5)删除CenterTabPanel中的默认tabPanel,结果如下图



6)保存运行,点击菜单中部视图将切换到正确的页面,如下图


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值