ExtJS 4动态加载组件
这功能不错,相当使用,不用再为动态更换组件仇了,代码很简单就不多说了。
| 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
| 2 | <html> |
| 3 | <head> |
| 4 | <title>加载组件</title> |
| 5 | <link rel="stylesheet" type="text/css" href="../Ext4/resources/css/ext-all.css"/> |
| 6 | <script type="text/javascript" src="../Ext4/bootstrap.js"></script> |
| 7 | <script type="text/javascript" src="../Ext4/locale/Ext-lang-zh_CN.js"></script> |
| 8 | <style type="text/css"> |
| 9 | /*在此添加样式代码*/ |
| 10 | </style> |
| 11 | </head> |
| 12 | <body> |
| 13 | <!--在此添加HTML代码--> |
| 14 | <script type="text/javascript"> |
| 15 | |
| 16 | Ext.onReady(function(){ |
| 17 | if(Ext.BLANK_IMAGE_URL.substr(0,4)!="data"){ |
| 18 | Ext.BLANK_IMAGE_URL="./images/s.gif"; |
| 19 | } |
| 20 | |
| 21 | //在此添加ExtJS代码 |
| 22 | var panel=Ext.create("Ext.Panel",{ |
| 23 | renderTo:Ext.getBody(), |
| 24 | layout:"auto", |
| 25 | height:500, |
| 26 | width:400, |
| 27 | autoLoad:{ |
| 28 | url:"Component.js", |
| 29 | renderer:"component" |
| 30 | }, |
| 31 | tbar:[ |
| 32 | {text:"加载组件",scope:panel,handler:function(){ |
| 33 | panel.loader.load({ |
| 34 | url:"Component1.js", |
| 35 | renderer:"component" |
| 36 | }) |
| 37 | }}, |
| 38 | {text:"加载组件(removeAll)",scope:panel,handler:function(){ |
| 39 | panel.loader.load({ |
| 40 | url:"Component1.js", |
| 41 | renderer:"component", |
| 42 | removeAll:true |
| 43 | }) |
| 44 | }} |
| 45 | ] |
| 46 | }); |
| 47 | }); |
| 48 | </script> |
| 49 | </body> |
| 50 | </html> |
| 51 |
关键是autoLoad的定义,renderer可以设置渲染方式,渲染方式有3种:html、data和componet。html方式就是更新innerHTML,data复杂点,是以数据格式更新。componet呢则是使用组件的add方法添加组件。注意第二个按钮的removeAll属性,该属性为true会移除面板内原有的所有组件,然后再添加新的,这为更换grid的显示提供了一个便捷的方式。当然了,不用动态加载,直接使用组件的removeAll方法清除组件,然后使用add也是可以添加的。本文的目的是动态加载,所以就这样使用而已。
Componet1.js
| 1 | {xtype:'panel',height:100,width:90,html:"新增的组件"} |
Componet.js
| 1 | {xtype:'panel',height:100,width:200,html:"原有的组件"} |
浙公网安备 33010602011771号