




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ExtJs 按需动态加载(多app模式)在Extjs中,为了满足动态加载js文件的过程,经过本人测试,可采用以下两种方式:javascriptview plaincopy1. 1、在一个application实例下在此情况下,可采用Ext.require()函数进行动态按需加载js文件。以加载一个controller为例:javascriptview plaincopy1. Ext.require(MyApp.controller.event.Bases,function()2. MyApp.getController(event.Bases).init();3. tab=me.getTabp
2、anel().add(4. xtype:view,5. closable:true,6. animate:true,7. iconCls:icon-rights,8. title:record.raw.menuName9. );此controller为MyApp.controller.event.Bases,在才用Ext.require()加载指定文件时,只会通过网络获取此文件,即MyApp.controller.event.Bases.js文件,此时并未加载controller所依赖的model,store,view,此时还需要调用MyApp.getControoler()方法对所获得的co
3、ntroller文件进行初始化,调用其init()方法将加载所依赖的store,model和view文件。另外,通过查看Ext.app.Application的getController源码:javascriptview plaincopy1. getController:function(name)2. varme=this,3. controllers=me.controllers,4. className,controller;5. 6. controller=controllers.get(name);7. 8. if(!controller)9. className=me.getMo
4、duleClassName(name,controller);10. 11. controller=Ext.create(className,12. application:me,13. id:name14. );15. 16. controllers.add(controller);17. 18. if(me._initialized)19. controller.doInit(me);20. 21. 22. 23. returncontroller;24. ,通过阅读getController文件源码,可看出:通过getController方法,首先获得对应controller对应cont
5、roller的className,然后通过Ext.create()方法创建controller,并将此controller加入到对应MyApp实例的controllers中,最重要的一点,然后调用controller.doInit()方法初始化controler,加载对应的store,model,view文件以及调用init()方法,所以在单application下,可以简化动态加载过程:javascriptview plaincopy1. MyApp.getController(event.Bases).init();为使Ext.Loader动态加载开启,需进行如下设置:javascript
6、view plaincopy1. Ext.Loader.setConfig(2. enabled:true3. );2、多实例application首先以ExtJs 4.1版本进行测试,在大系统下,可对业务进行模块划分,各个模块可以单独创建application,当需要加载指定模块时,创建对应的application,并加载其依赖文件,实现各个模块的按需加载,相比一次性加载所有文件相比,系统的启动加载速度将提高。在加载各个模块时,可以才用loader属性或者加载iframe完成,在iframe用法中将会重复加载文件,这里不予介绍,下面主要介绍一下loader方法。 在ExtJs4.1 版本下,
7、假定左边为treepanel,右边为tabpanel,点击左边的树节点将分模块加载对应的application,并在右侧的tabpanel中进行显示,当点击左侧树节点时,在其点击相应函数中添加:javascriptview plaincopy1. panel=tab.add(Ext.create(Ext.panel.Panel,2. id:record.raw.id,3. title:record.raw.text,4. layout:fit,5. loader:6. url:record.raw.url,7. autoLoad:true,8. scripts:true9. ,10. auto
8、Show:true,11. autoRender:true,12. tabTip:record.raw.text,13. border:false,14. renderTo:Ext.getBody(),15. closable:true16. );在loader属性中,url为指定加载的html文件,如app/logApp/logList.html,在此html中引用此模块对应的js文件,其格式如下:htmlview plaincopy1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 在html中增加标签,作用是将此模块创建的页面渲染到此标签上,下面将会讲到
9、,如果没有此标签,页面将无法渲染,而且在一个系统下,各模块的的id必须为唯一。html所引用的js文件实例如下:javascriptview plaincopy1. Ext.Loader.setConfig(2. enabled:true3. );4. 5. Ext.application(6. 7. name:LogListApp,8. appFolder:app/logApp,9. autoCreateViewport:false,10. controllers:log.LogInfos11. ,12. launch:function()13. console.log(logListApp
10、launch!);14. Ext.create(Ext.panel.Panel,15. /html:World!,16. renderTo:logpanel,17. items:18. xtype:loginfolist19. 20. );21. 22. 23. );这此文件中创建application,然后引用对于对应controller,以及创建页面,通过renderTo将页面渲染到标签中,在ExtJs 4.1中可以采用Ext.create的方式创建app,MyApp作为全局application实例变量(命名空间),但在ExtJs4.1 中将存在一个严重问题:新application的创
11、建将覆盖以前application注册的事件监听,监听失效,这将是毁灭性的。通过测试,有两种解决办法:(1)、修改注册监听的注册方式原事件注册方式可能如下:javascriptview plaincopy1. this.control(2. viewportnavigatorheaderbuttonaction=login:3. click:this.login4. )修改注册方式如下:javascriptview plaincopy1. viewport:2. render:function(view)3. view.down(navigatorheaderbuttonaction=logi
12、n).on(click,this.login);4. 将页面事件全部注册到render的相应函数中,这样在ExtJs4.1版本下,各个模块的事件将依然有效。(2)、引用ExtJs 4.2 版本事件失效可能是ExtJs4.1版本下的一个bug,在引用4.2版本后,无需修改事件的注册方式即可使用,但application的创建方式放生改变,如果还是调用Ext.create(Ext.app.applicaton,)方式无法实例化application ,需要改变其创建方式,在4.2版本的文档中推荐如下方式进行创建:javascriptview plaincopy1. Ext.application(2. name:MyApp,3. launch:function()4. Ext.create(Ext.container.Viewport,5. items:6. html:MyApp7. 8. );9. 10. );那么通过如下方法可以获得对应的application 实例:javascriptview plaincopy1. varapp=MyApp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高级经济师考试试卷及答案详细汇报
- 2025年心理学考研复习试题及答案
- 2025年全国大学英语考试模拟试题及答案
- 2025年初中数学补习班考试题及答案
- 中医执业医师考试复习app:如何选择高效工具
- 中考物理考点冲刺23【热机】(含答案)
- 医疗机构后勤服务流程优化与建筑设施改造合同
- 民宿景区特色民宿租赁及民宿旅游导览服务合同
- 人工智能语音数据标注合作框架协议
- 虚拟现实旅游项目风险评估与投资决策合作协议
- 2025年北京市朝阳区高三二模-政治+答案
- 温州市普通高中2025届高三第三次适应性考试物理试题及答案
- 《光纤激光切割技术》课件
- 10.信息光子技术发展与应用研究报告(2024年)
- 2025年下半年商务部外贸发展事务局第二次招聘8人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年山西杏花村汾酒集团有限责任公司招聘笔试真题
- 《行政法与行政诉讼法》课件各章节内容-第一章 行政法概述
- 浙江2025年浙江省地质院本级及所属部分事业单位招聘笔试历年参考题库附带答案详解
- 2025年广东广州中物储国际货运代理有限公司招聘笔试参考题库含答案解析
- 海外安保面试题及答案
- 危重患者的早期康复
评论
0/150
提交评论