87,907
社区成员
发帖
与我相关
我的任务
分享
Ext.define('Sys.view.mail.Menu', {
extend: 'Ext.menu.Menu',
alias: 'widget.emailmenu',
title: 'Email',
iconCls: 'x-fa fa-inbox',
floating: false,
items: [
{
iconCls: 'x-fa fa-edit',
text: 'Compose'
,action:'myto'
// ,id:'sendMail'
},
{
iconCls: 'x-fa fa-inbox',
text: 'Inbox'
}
]
});
refs: [
{ref: 'emailMenu', selector: 'emailmenu'}
]
init: function() {
this.control({
,'emailmenu menuitem[action=myto]':{
click:this.activeTab
}
});
}
activeTab: function(){}
Ext.define('Sys.view.Viewport', {
extend: 'Ext.container.Viewport',
layout: 'border',
items: [{
region: 'north',
baseCls: 'app-header',
html: 'Web邮件系统'
},{
region: 'center',
id:'centerTabPanel',
xtype:'tabpanel'
}, {
region: 'west',
split:true,
width:'15%',
collapsible: true,
layout:'accordion',
items:[{
xtype:'emailmenu'
// xtype:'mail_select_panel'
}]
}]
});
改成这样
,'emailmenu menuitem':{
click:this.dynamicLoadingController
}
,dynamicLoadingController: function(item) {
var self = this;
var record = item.name;
if(record){
var controllerName = record.replace(/(\w)/,function(v){return v.toUpperCase()})+'Controller';//User+Controller Log+Controller
var controllerPath = 'Sys.controller.'+controllerName;
if(!Ext.ClassManager.isCreated(controllerPath)){
//还没加载,现在加载控制器
Ext.require(controllerPath, function () {//加载完成后执行回调函数
this.getController(controllerPath);//ExtJS 4.2后自动初始化
this.activeTab(item);
}, self);
}else{
this.activeTab(item);
}
}
},
activeTab: function(item) {
var record = item.name;
var modelId = record+"_model_panel";
var tabs = Ext.getCmp('centerTabPanel'); //Viewport-> id:'centerTabPanel'
var tab = tabs.items.getByKey(modelId);
if (!tab) {
tab = tabs.add({
xtype: modelId,
itemId: modelId,
closable:true
});
}else{
tabs.setActiveTab(tab);
}
}
动态加载控制器和tabPanel,最重要是 拼 控制器和Panel 的名字