版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ExtJs 按需動(dòng)態(tài)加載(多app模式)在Extjs中,為了滿足動(dòng)態(tài)加載js文件的過(guò)程,經(jīng)過(guò)本人測(cè)試,可采用以下兩種方式:javascript view plain copy 1. 1、在一個(gè)application實(shí)例下在此情況下,可采用Ext.require()函數(shù)進(jìn)行動(dòng)態(tài)按需加載js文件。以加載一個(gè)controller為例:javascript view plain copy 1. Ext.require('MyApp.controller.event.Bases',function()
2、160; 2. MyApp.getController('event.Bases').init(); 3.
3、 tab = me.getTabpanel().add( 4.
4、160; xtype: view, 5. closable: true, 6. &
5、#160; animate : true, 7.
6、60; iconCls: 'icon-rights', 8.
7、 title: record.raw.menuName 9. ); 此controller為MyApp.controller.event.B
8、ases,在才用Ext.require()加載指定文件時(shí),只會(huì)通過(guò)網(wǎng)絡(luò)獲取此文件,即MyApp.controller.event.Bases.js文件,此時(shí)并未加載controller所依賴的model,store,view,此時(shí)還需要調(diào)用MyApp.getControoler()方法對(duì)所獲得的controller文件進(jìn)行初始化,調(diào)用其init()方法將加載所依賴的store,model和view文件。另外,通過(guò)查看Ext.app.Application的getController源碼:javascript view plain copy 1. getContro
9、ller: function(name) 2. var me = this, 3. controllers = me.controllers,
10、60;4. className, controller; 5. 6. controller = controllers.get(name); 7. 8. if (!co
11、ntroller) 9. className = me.getModuleClassName(name, 'controller'); 10. 11. controller =
12、Ext.create(className, 12. application: me, 13. id: &
13、#160; name 14. ); 15. 16. controllers.add(controller); 17. 18. &
14、#160; if (me._initialized) 19. controller.doInit(me); 20. 21.
15、160; 22. 23. return controller; 24. , 通過(guò)閱讀getController文件源碼,可看出:通過(guò)getController方法,首先獲得對(duì)應(yīng)controller對(duì)應(yīng)controller的className,然后通過(guò)Ext.create()方法創(chuàng)建controller,并將此contr
16、oller加入到對(duì)應(yīng)MyApp實(shí)例的controllers中,最重要的一點(diǎn),然后調(diào)用controller.doInit()方法初始化controler,加載對(duì)應(yīng)的store,model,view文件以及調(diào)用init()方法,所以在單application下,可以簡(jiǎn)化動(dòng)態(tài)加載過(guò)程:javascript view plain copy 1. MyApp.getController('event.Bases').init(); 為使Ext.Loader動(dòng)態(tài)加載開(kāi)啟,需進(jìn)行如下設(shè)置:javascript view plain
17、 copy 1. Ext.Loader.setConfig( 2. enabled : true 3. ); 2、多實(shí)例application首先以ExtJs 4.1版本進(jìn)行測(cè)試,在大系統(tǒng)下,可對(duì)業(yè)務(wù)進(jìn)行模塊劃分,各個(gè)模塊可以單獨(dú)創(chuàng)建application,當(dāng)需要加載指定模塊時(shí),創(chuàng)建對(duì)應(yīng)的application,并加載其依賴文件,實(shí)現(xiàn)各個(gè)模塊的按需加載,相比一次性加載所有文件相比,系統(tǒng)的啟動(dòng)加載速度將提高。在加載各個(gè)模塊時(shí),可以才用loade
18、r屬性或者加載iframe完成,在iframe用法中將會(huì)重復(fù)加載文件,這里不予介紹,下面主要介紹一下loader方法。 在ExtJs4.1 版本下,假定左邊為treepanel,右邊為tabpanel,點(diǎn)擊左邊的樹(shù)節(jié)點(diǎn)將分模塊加載對(duì)應(yīng)的application,并在右側(cè)的tabpanel中進(jìn)行顯示,當(dāng)點(diǎn)擊左側(cè)樹(shù)節(jié)點(diǎn)時(shí),在其點(diǎn)擊相應(yīng)函數(shù)中添加:javascript view plain copy 1. panel = tab.add(Ext.create('Ext.panel.Panel',
19、60;2. id : record.raw.id, 3. title : record.raw.text, 4.
20、60; layout : 'fit', 5. loader : 6.
21、; url : record.raw.url, 7. autoLoad : true, 8.
22、160; scripts : true 9. , 10.
23、 autoShow : true, 11. autoRender : true, 12. tabTip : rec
24、ord.raw.text, 13. border : false, 14. renderTo : Ext.getBody(), 15.
25、 closable : true 16. ); 在loader屬性中,url為指定加載的html文件,如app/logApp/logList.html,在此html中引用此模塊對(duì)應(yīng)的js文件,其格式如下:html
26、view plain copy 1. <!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"> 2. <html> 3. <head> 4. 5. <title></title> 6. 7.
27、</head> 8. <script type="text/javascript" src="app/logApp/logListApp1.js"></script> 9. 10. <body> 11. <div id="logpanel"></div> 12. </body> 13. &l
28、t;/html> 在html中增加<div>標(biāo)簽,作用是將此模塊創(chuàng)建的頁(yè)面渲染到此標(biāo)簽上,下面將會(huì)講到,如果沒(méi)有此標(biāo)簽,頁(yè)面將無(wú)法渲染,而且在一個(gè)系統(tǒng)下,各模塊的<div>的id必須為唯一。html所引用的js文件實(shí)例如下:javascript view plain copy 1. Ext.Loader.setConfig( 2. enabled : true 3. ); 4. &
29、#160; 5. Ext.application( 6. 7. name : 'LogListApp', 8. appFolder : 'app/logApp', 9. autoCreateViewport : false, 10
30、. controllers : 'log.LogInfos' 11. , 12. launch : function() 13. console.log('logListApp launch!
31、39;); 14. Ext.create('Ext.panel.Panel', 15. / html: '<p>World!</p>', 16.
32、 renderTo: 'logpanel', 17. items: 18. xtype: 'loginfo
33、list' 19. 20. ); 21. 22. 23. ); 這此文件中創(chuàng)建application,然后引用對(duì)于對(duì)應(yīng)controller,以及創(chuàng)建頁(yè)面,通過(guò)rend
34、erTo將頁(yè)面渲染到<div>標(biāo)簽中,在ExtJs 4.1中可以采用Ext.create的方式創(chuàng)建app,MyApp作為全局application實(shí)例變量(命名空間),但在ExtJs4.1 中將存在一個(gè)嚴(yán)重問(wèn)題:新application的創(chuàng)建將覆蓋以前application注冊(cè)的事件監(jiān)聽(tīng),監(jiān)聽(tīng)失效,這將是毀滅性的。通過(guò)測(cè)試,有兩種解決辦法:(1)、修改注冊(cè)監(jiān)聽(tīng)的注冊(cè)方式原事件注冊(cè)方式可能如下:javascript view plain copy 1. this.control( 2.
35、;'viewport navigatorheader buttonaction=login': 3. click: this.login 4. ) 修改注冊(cè)方式如下:javascript view plain copy 1. 'viewport': 2.
36、0; render: function(view) 3. view.down('navigatorheader buttonaction=login').on('click',this.login); 4. 將頁(yè)面事件全部注冊(cè)到render的相應(yīng)函數(shù)中,這樣在ExtJs4.1版本下,各個(gè)模塊的事件將依然有效。(2)、引用ExtJs 4.2 版本事件失效可能是ExtJs4.1版本下的一個(gè)bug,在引用4.2版本后,無(wú)需修改事件的注冊(cè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 父親節(jié)文藝節(jié)目主持詞(3篇)
- 安全培訓(xùn)課件高處作業(yè)
- 購(gòu)銷(xiāo)協(xié)議(樣式二)(31篇)
- 頸椎病何時(shí)需要就醫(yī)
- 2024年分手協(xié)議范本:雙方自愿分手
- 城市平房租賃合同范例
- 社交與合作的力量模板
- 2024年度技術(shù)共享與合作保密合同
- 哈爾濱勞動(dòng)合同模板
- 2024年新修訂:農(nóng)村土地流轉(zhuǎn)合同樣本
- CT報(bào)告單模板精編版
- 柿子品種介紹PPT課件
- 內(nèi)鏡清潔消毒登記表格模板
- 《梯形的面積》(課堂PPT)
- 天然氣脫硫(課堂運(yùn)用)
- 幼兒園教師師德師風(fēng)考核表(共2頁(yè))
- 城鎮(zhèn)職工醫(yī)療保險(xiǎn)運(yùn)行中的問(wèn)題分析及措施
- 阿拉丁神燈介紹ppt[共27頁(yè)]
- 學(xué)校食堂五常法管理制度
- 畢業(yè)設(shè)計(jì)500kv變電站設(shè)計(jì)
- 講故事社團(tuán)活動(dòng)教案
評(píng)論
0/150
提交評(píng)論