折腾了几天的extjs动态加载controller因为要换风格得扔了,存在这里供大家伙参考吧。
app.js
var application; Ext.tip.QuickTipManager.init(); Ext.Loader.setConfig({ disableCaching:true, enabled: true }); application =new Ext.application({ requires: [ 'Ext.window.MessageBox', 'Ext.container.Viewport' ], name: 'app', appFolder:'js/xxx/app', autoCreateViewport:false, controllers: [ 'frameController' ], launch: function() { Ext.widget("main_viewport"); } }); function refresh4Session() { Ext.Ajax.request({url: GLOBAL_ROOT_PATH+'/blank.jsp'}); setTimeout(refresh4Session,5*60*1000);//五分钟 } refresh4Session();
Ext.define('app.controller.frameController',{ extend : 'Ext.app.Controller', alias : 'controller.frameController', views : ['Viewport'], refs:[ {ref:'tabpanel',selector:'main_viewport>tabpanel[id=tabpanel]'} ], init : function(application) { var me = this; window.application=me.getApplication(); me.control({ 'main_viewport>panel[region=west]':{ render:function(obj){ var treepanel=Ext.create('Ext.tree.Panel',{ title:'test', autoHeight:true, autoScroll: true, split: true, rootVisible:false, lines:true, store: Ext.create('Ext.data.TreeStore', { root: { expanded: true, children: [ {text: '菜单名称', page: 'xxxxInfo_List', controller_full_class_name:'app.controller.xxxxInfo',leaf: true}, {text: '菜单名称', page: 'xxxxLevel_List',controller_full_class_name:'app.controller.xxxxLevel',leaf: true} ] } }), listeners: { 'itemclick': function(view, record){ if (!Ext.ClassManager.isCreated(record.raw.controller_full_class_name)) { me.getApplication().getController(record.raw.controller_full_class_name); } if(record.isLeaf()){ var id = 'tab-' + record.internalId; var center = me.getTabpanel();//view.up('viewport').down('tabpanel'); var tab = center.queryById(id); if(!tab){ tab = center.add(Ext.widget(record.raw.page, {itemId: id, title: record.get('text'),closable : true})); } center.setActiveTab(tab); } } } }); obj.items.add(treepanel); } } }); } });
上面的代码中,实现动态加载controller的最核心的其实就是
if (!Ext.ClassManager.isCreated(record.raw.controller_full_class_name)) { me.getApplication().getController(record.raw.controller_full_class_name); }
其他的就是mvc的正常的东西,比较简单了。
相关推荐
demo描述: 1. 页面主框架是左是一个tree,右边是一个tablepanel ...3. 点击左边的树的节点动态加载controller生成一个table 注:需要自己导入Extjs 4.2.x 的文件,该demo是用Extjs 4.2.1 写的
只要将解压的文件直接放置到myeclipse的webroot下面,启动tomcat访问。简单的EXTJS mvc框架,设计 store,model,controller,view,window等等,同时展示了一些基本的点击显示、修改等等操作,需要的同学自行下载
可以通过动态创建controller的方式,还能遵循mvc设计规范。这个例子完美破解,经过测试。 extjs4.0好像设计上是一个应用对应一个application,所以原先想通过动态加载多个application来实现上面的需求。但是那样会...
本例采用ASP.NET MVC3 +EXTJS4 MVC 框架,完美实现了EXTJS4动态加载JS文件,对ASP.NET MVC3及EXTJS4 MVC 各应用要点进行了应用。对于想采用ASP.NET MVC3 +EXTJS4 MVC 框架的学习者有很好的帮助,快速掌握MVC框架,本...
Extjs4 MVC小实例根据The MVC Application Architecture做的
本工程采用ExtJs4.0 开发,采用mvc开发模式,分为controller view model store。
extjs的官方api中的例子
是用extjs mvc写的,controller里面会配置model store view,然后mode和store的关系,相信大家也很清楚了,store里面会用到model,当然也可以不用,和原来的extjs3.x是一样的,用field来表示,其实是换汤不换药而已...
Extjs4.0+MVC模式+存动态加载,动态加载面板,动态加载控制器,动态加载树叶子节点,后台servlet模拟json数据
配合extjs4.2.0的MVC开发模式教程使用更好
严格按照MVC架构分的曾,可以运行的extJs4.2MVC示例,在myclipse加到一个项目里的的webroot文件夹下,运行index.html即可
ExtJs 4 用了一段时间了,今天研究了下ExtJs4的MVC机制,感觉还挺好,建议大家尝试,所以就写了一个demo,帮助那些对ExtJs还不是很懂,或者想用ExtJs4却又不知道怎么做好的朋友。。。多余话不说了大家如果有什么不...
ExtJS MVC入门级开发案例 适用于初学者
ExtJS4.0MVC学习,适合初学者。
前台完全基于 extjs mvc框架开发 想学习extjs mvc的可以看看 后台用了activiti工作流 写了一个简单的请假审批例子 想学习spring mvc的也可以下载看看
NULL 博文链接:https://xiaolongheni.iteye.com/blog/1594739
ExtJS4.0.7的MVC模式。 欢迎大家下载。
最新版本,ExtJS6 MVC 精简示例!!!,一个可以参考的小例子!
MVC with ExtJS 4 prictiacal Ext JS 上的关于MVC的例子