论坛首页 Web前端技术论坛

ExtJs中XTemplate的用法

浏览 2110 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-05-15  

 

1、 自动填充数组和作用域切换

 

          Ext.onReady(function(){
              var tpl=new Ext.XTemplate(
                 '<table border=1>',
                  '<tr><td>姓名</td><td>年龄</td><td>操作</td></tr>',
                  '<tpl for=".">',
                  '<tr><td>{name}</td><td>{age}</td><td></td></tr>',
                  '</tpl>',
                  '</table>'
                  ) ;
              var tplData=[
                  {name:'a',age:10},
                  {name:'b',age:20},
                  {name:'c',age:30},
                  {name:'d',age:40},
                  {name:'e',age:50},
              ];
              var panel=Ext.create('Ext.panel.Panel',{
                  title:'XTmplate',
                  width:1200,
                  height:300,
                  tpl:tpl,
                  renderTo:Ext.getBody()
              });
              tpl.append('tmp',tplData);
         });

 

代码中使用tpl 标签和for 运算符,本例中for运算符的值为“.”,表示指向当前对象,“..” 表示指向父对象,也可以直接写对象名,另外对数组的支持可以成批向模板中追加数据,

 

 

2、自动渲染简单数组

 

  
Ext.onReady(function(){
              var tpl=new Ext.XTemplate(
                 '<table border=1>',
                  '<tr><td>姓名</td><td>年龄</td><td>COM</td></tr>',
                  '<tpl for=".">',
                  '<tr><td>{#}</td><td>{.}</td><td>{.}</td></tr>',
                  '</tpl>',
                  '</table>'
                  ) ;
             
             var array=['a','b','c','d','e'];
             tpl.append('tmp',array);

         }) ; 

 

 

其中:{#} 代表行号,{.} 代表数组内容

 

 

3、在模板中执行任意代码

 

 

    Ext.onReady(function(){
              var tpl=new Ext.XTemplate(
                 '<table border=1 class=title>',
                  '<tr><td>序号</td><td>姓名</td><td>工资</td><td>奖金</td></tr>',
                  '<tpl for="emps">', 
                      '<tr class="{[xindex % 2==0? "even":"odd" ]}">',
                      '<td>{[xindex]}</td><td>{[values.name]}</td>',
                      '<td>{[values.wage*parent.per]}</td>',
                      '<td>{[Math.round(values.wage*parent.per/xcount)]}</td></tr>',
                      
                  '</tpl>',
                  '<tr><td>发薪时间</td><td colspan=3>{[fm.date(new Date,"Y年m月d日")]}</td></tr>',
                  '<tr><td>工资总计</td><td colspan=3>  </td></tr>',
                  '</table>'
                  ) ;
              
              
             var tplData={
                 per:0.9,
                 emps:[
                     {name:'a',wage:1000},
                     {name:'b',wage:200},
                     {name:'c',wage:100},
                     {name:'d',wage:10},
                     {name:'e',wage:897},
                     {name:'f',wage:110}
                 ]
             };
             tpl.append('tmp',tplData);
             
              
         });

 

其中:

    

values : 当前作用域下的值对象,通过切换子模板的作用域可以改变其中的值

 

parent:父模板的值对象

 

xindex:循环模板的索引

 

xcount: 循环模板时候的总循环次数

 

 

 

参考资料:    ExtJs中XTemplate使用     http://www.studyofnet.com/news/408.html

 

论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics