Extjs创建多个controller实现多模块MVC动态加载
来源:互联网 发布:淘宝没收到货退款流程 编辑:程序博客网 时间:2024/06/06 10:52
首先将
Ext.application({
name: 'IV',
appFolder: 'js/app',
autoCreateViewport:true,
controllers: [
'config.ModuleController','config.user.UserController',''config.system.UserController''
],
launch: function() {
Ext.tip.QuickTipManager.init();
}
});
改为:
var application = new Ext.app.Application({
name: 'IV',
appFolder: 'js/apps/mainApp',
autoCreateViewport:true,
// requires:['Module.SubSystemModule','Module.UserModule'],
controllers: [
// 'config.ModuleController','config.user.UserController'
'ModuleController'
],
launch: function() {
//Ext.Msg.alert('1','323333333');
Ext.tip.QuickTipManager.init();
}
});
说明:将application定义到外面。方便controller引用。(也可以不用定义到外面,因为controller里面的init方法能拿到applicaiton的引用)
然后:在moduleController里面的按钮菜单点击处理函数里面代码如下:
onSelectionChange: function(thisview, record, eOpts){
var self = this;
var selected = record;
if(selected.get('module') =='userModule'){
Ext.require("IV.controller.UserController",function(){
var userController = application.getController('UserController');
userController.init(application);
},self);
}else if(selected.get('module') =='roleModule'){
Ext.require("IV.controller.RoleController",function(){
var roleController = application.getController('RoleController');
roleController.init(application);
},self);
}
}
注意
Ext.require("IV.controller.UserController",function(){
var userController = application.getController('UserController');
userController.init(application);
},self);
先加载userController。然后再加载完成后,通过application的getController方法实例化UserController,并注册UserController到application中。然后手动调用该controller的init方法。因为你是动态加载该controller的,如果这里不执行init方法将application传过去的话,controller里面的init方法是不会自动执行的。application的源码里面也是这么干的。。so我也这么干。
2:然后:
在我的userController里面的init方法如下:
init: function(app) {
this.control({
'userGrid': {
'itemclick':this.gridItemClickFun
}
});
var center = app.getController('ModuleController').getCenter();
var userPanel = center.child('userPanel');
if(!userPanel){
var userPanel = Ext.widget('userPanel',{title:'系统设置>用户管理'});
center.add(userPanel);
center.setActiveTab(userPanel);
}else{
center.setActiveTab(userPanel);
}
},
我需要通过application来获得moduleController的引用,并根据moduleController来获得里面的center组件(一个tabPanel)。然后将UserController对应模块里面的UserPanel添加到center组件的tab中。(这个userPanel就类似于moduleController中的viewPort,userPanel以及其里面的子元素,都可以遵循mvc模式在userController里面进行管理了。)。之后userController里面的代码逻辑就照正常MVC逻辑走。
- Extjs创建多个controller实现多模块MVC动态加载
- 如何更优雅的实现ExtJS的前端MVC模式下一个App多个Controller的动态加载
- 如何更优雅的实现ExtJS的前端MVC模式下一个App多个Controller的动态加载
- 如何更优雅的实现ExtJS的前端MVC模式下一个App多个Controller的动态加载
- extjs4 mvc 动态加载controller
- ExtJS 创建动态加载树
- How to Delete controller ExtJS? extjs多个app时,删除其他app的controller
- ExtJs4 MVC 提高加载速度 动态加载Controller
- ExtJs4 MVC 提高加载速度 动态加载Controller
- ajax+jQuery实现一个页面同时加载多个模块!
- ajax+jQuery实现一个页面同时加载多个模块!
- ExtJs 实现动态列,动态多表头
- ExtJs 实现动态列,动态多表头
- 实现一个controller上集成多个controller
- Extjs+jquery实现动态载入多个页面,实现iframe效果
- spring mvc一个Controller响应多个请求
- ExtJs 实现动态加载grid完整示例
- springMVC一个Controller实现多个方法
- 各种数据库分页的sql语句
- 面试题->motolola一面试题
- hdu 2444 The Accomodation of Students 二分图判断与匹配
- 单文档显示图片
- 报错java.lang.ClassCastException: XXXXXXX.Application cannot be cast to android.app.MyApplicati
- Extjs创建多个controller实现多模块MVC动态加载
- Flex页面跳转的五种实现方式
- ARM工作模式及寄存器
- 希望早几年知道的5个Unix命令
- jquery实现div阴影效果示例代码
- 导出excel 带有图片 或其它功能
- Linux make命令详解
- windows文件中的中文在ubuntu下乱码(小弟参考了许多都不行,这个绝对行啊) .
- 映射大字段Blob