ext viewpoint简单例子

来源:互联网 发布:fdd lte网络 编辑:程序博客网 时间:2024/06/11 21:15
以建立一个的简单的后台管理模板为例子(样式如下): 

1、必要的引用 
 
其中local为语言包,resources为ext UI包 , ext-all.js则为核心库,shared则是当涉及多个框架的时候使用。 
2、新建一个html测试页面加入必要的引用 
Html代码  收藏代码
  1. <link rel="stylesheet" type="text/css" href="ExtJS/resources/css/ext-all.css">  
  2. <script type="text/javascript" src="ExtJS/ext-all-debug.js"></script>  
                                                                   
3、初始化一个viewpoint 
Html代码  收藏代码
  1. Ext.onReady(function() {  
  2.    var viewport = Ext.create('Ext.Viewport', {  
  3.     id: 'border-example',  
  4.     layout: 'border',  
  5.     items: [  
  6.      pnNorth,  
  7.      pnWest,  
  8.      pnCenter  
  9.     ]  
  10.    });  
  11.   });    
                                                                                                                                                                                                  
viewpoint,顾名思义就是一个页面,其中包含的小页面则是items中显示的东西,这里我们应该先定义好每一个items对应是那种类型的component,一般的管理后台都是上边一个显示欢迎页面Panel,左边是一个下拉树显示所有的菜单Panel,右边则根据鼠标点击左边的哪个菜单莱尼显示不同的页面,对应的是tab.Panel) 

接下来就是就是定义每个panel了,共三个north,west ,center,位置则是在属性region中定义; 
Html代码  收藏代码
  1.             
  2. //首先定义好每个panel中包含什么item  
  3. var itemWest_sys=[{  
  4.    title: 'Management',  
  5.    itemId:'mgId',  
  6.    iconCls: 'nav' // see the HEAD section for style used  
  7.   }, {  
  8.    title: 'Tiemsheet',  
  9.    collapsed : false,//default to render it expand,default:true(collapsed)  
  10.    itemId:'tsId',  
  11.    html: 'Some settings in here.  
  12. ',  
  13.    iconCls: 'settings'  
  14.   }];  
  15.   //center item  
  16.   var itemCenter=[{  
  17.    title: 'Index',  
  18.    itemId:'indexId',  
  19.    autoScroll: true,  
  20.    html:'<iframe src="main.html" frameBorder=0 ></iframe>'  
  21.   }];  
  22. //初始化每个panel  
  23. //region-north  
  24.   var pnNorth=new Ext.Panel({  
  25.    id:'pnNorth',    
  26.    autoWidth:true,    
  27.    heigth:40,    
  28.    margins: '0 5 0 10',  
  29.    padding:'0 0 0 30',  
  30.    frame:true,  
  31.    region:'north',  
  32.    html:'<h1>Hello Timesheet Management System</h1>'  
  33.   });  
  34.   //region-west  
  35.   var pnWest=new Ext.Panel({  
  36.    id:'pnWest',  
  37.    region:'west',  
  38.    title:"west",  
  39.    split: true,  
  40.    width: 200,  
  41.    minWidth: 175,  
  42.    maxWidth: 400,  
  43.    collapsible: true,  
  44.    animCollapse: true,  
  45.    margins: '0 0 0 10',  
  46.    layout: 'accordion',  
  47.    items: itemWest_sys  
  48.   });  
  49.   //region-center  
  50.   var pnCenter=Ext.create('Ext.tab.Panel', {  
  51.    region: 'center', // a center region is ALWAYS required for border layout  
  52.    deferredRender: false,  
  53.    margins: '0 5 0 0',  
  54.    activeTab: 0, // first tab initially active  
  55.    items:itemCenter  
  56.   });  
         
每个panel中还可以包含其他的panel,在items中定义。 
例如左边的菜单需要根据数据库返回来的数据进行动态加载: 
首先将数据进行组装,然后再调用add()方法进行动态的加入; 
Html代码  收藏代码
  1.     
  2. var test={title: 'Index',  
  3.    itemId:'indexId',  
  4.    autoScroll: true,  
  5.    closable:true,  
  6.    html:'<h1>Test for item add</h1>'   
  7.   };//组转格式  
  8. pnAdd.add(test );  

4、整个页面的源码 
Html代码  收藏代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   
  2.     "http://www.w3.org/TR/html4/loose.dtd">  
  3. <html>  
  4. <head>  
  5.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  6.     <link rel="stylesheet" type="text/css" href="ExtJS/resources/css/ext-all.css">  
  7.     <script type="text/javascript" src="ExtJS/ext-all-debug.js"></script>  
  8.  <script type="text/javascript">  
  9.       
  10.   //--------------系统全局变量-------  
  11.   //west sys item  
  12.   var itemWest_sys=[{  
  13.    title: 'Management',  
  14.    itemId:'mgId',  
  15.    iconCls: 'nav' // see the HEAD section for style used  
  16.   }, {  
  17.    title: 'Tiemsheet',  
  18.    collapsed : false,//default to render it expand,default:true(collapsed)  
  19.    itemId:'tsId',  
  20.    html: 'Some settings in here.  
  21. ',  
  22.    iconCls: 'settings'  
  23.   }];  
  24.   //center item  
  25.   var itemCenter=[{  
  26.    title: 'Index',  
  27.    itemId:'indexId',  
  28.    autoScroll: true,  
  29.    html:'<iframe src="main.html" frameBorder=0 ></iframe>'  
  30.   }];  
  31.     
  32.   //添加树-------data tree test  
  33.   var tree_include = Ext.create('Ext.data.TreeStore', {  
  34.    root: {  
  35.     expanded: true,  
  36.     children: [  
  37.      { text: "detention", leaf: true },  
  38.      { text: "homework", expanded: true, children: [  
  39.       { text: "book report", leaf: true },  
  40.       { text: "algebra", leaf: true}  
  41.      ] },  
  42.      { text: "buy lottery tickets", leaf: true }  
  43.     ]  
  44.    }  
  45.   });  
  46.   var tree=Ext.create('Ext.tree.Panel', {  
  47.    title: 'Simple Tree',  
  48.    itemId:"treeId",  
  49.    width: 200,  
  50.    height: 150,  
  51.    store: tree_include,  
  52.    rootVisible: false,  
  53.    renderTo: Ext.getBody()  
  54.   });  
  55.     
  56.   //region-north  
  57.   var pnNorth=new Ext.Panel({  
  58.    id:'pnNorth',    
  59.    autoWidth:true,    
  60.    heigth:40,    
  61.    margins: '0 5 0 10',  
  62.    padding:'0 0 0 30',  
  63.    frame:true,  
  64.    region:'north',  
  65.    html:'<h1>Hello Timesheet Management System</h1>'  
  66.   });  
  67.   //region-west  
  68.   var pnWest=new Ext.Panel({  
  69.    id:'pnWest',  
  70.    region:'west',  
  71.    title:"west",  
  72.    split: true,  
  73.    width: 200,  
  74.    minWidth: 175,  
  75.    maxWidth: 400,  
  76.    collapsible: true,  
  77.    animCollapse: true,  
  78.    margins: '0 0 0 10',  
  79.    layout: 'accordion',  
  80.    items: itemWest_sys  
  81.   });  
  82.   //region-center  
  83.   var pnCenter=Ext.create('Ext.tab.Panel', {  
  84.    region: 'center', // a center region is ALWAYS required for border layout  
  85.    deferredRender: false,  
  86.    margins: '0 5 0 0',  
  87.    activeTab: 0, // first tab initially active  
  88.    items:itemCenter  
  89.   });  
  90.     
  91.   //Ext.require(['*']);  
  92.   Ext.onReady(function() {  
  93.    var viewport = Ext.create('Ext.Viewport', {  
  94.     id: 'border-example',  
  95.     layout: 'border',  
  96.     items: [  
  97.      pnNorth,  
  98.      pnWest,  
  99.      pnCenter  
  100.     ]  
  101.    });  
  102.   });  
  103.     
  104.   //函数---------添加item---------  
  105.   function addItem(itAdd,pnAdd){  
  106.    var rtn=pnAdd.getComponent(itAdd.itemId);  
  107.    if(rtn==null){  
  108.     pnAdd.add(itAdd);  
  109.    }else{  
  110.     pnAdd.setActiveTab(rtn);  
  111.    }  
  112.   }  
  113.   /* var test={title: 'Index',  
  114.    itemId:'indexId',  
  115.    autoScroll: true,  
  116.    closable:true,  
  117.    html:'<h1>Test for item add</h1>'   
  118.   };  
  119.   addItem(test,pnCenter);  
  120.   addItem(test,pnWest); */  
  121.     </script>  
  122.     <title>Welcome to Hello Timesheet Management System</title>  
  123. </head>  
  124. <body>  
  125.   
  126.  <div id="west" class="x-hide-display">  
  127.         Hi. I'm the west panel.  
  128.   
  129.     </div>  
  130.   
  131.  <div id="center1" class="x-hide-display">  
  132.         I can close ;I am pennal One  
  133.  </div>  
  134.  <div id="props-panel" class="x-hide-display" style="width:200px;height:200px;overflow:hidden;">  
  135.     </div>  
  136. </body>  
  137. </html>  


以上就是使用ExtJS制作的一个简单的后台管理模型;
0 0