`
zha_zi
  • 浏览: 590191 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Extjs4 XTemplate 用法

阅读更多

Ext.XTemplate 用法

  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);
	 	});

 <div id="tmp" />

 

代码中使用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="emps">',
	 		 	'<tr><td>{name}</td><td>{age}</td><td>{parent.companyName}</td></tr>',
	 		 	'</tpl>',
	 		 	'</table>'
	 		 	) ;
	 		
	 		 var company={
	 		 	companyName:'IBM',
	 		 	emps:[
	 		 		{name:'a',age:10},
		 		 	{name:'b',age:20},
		 		 	{name:'c',age:30},
		 		 	{name:'d',age:40},
		 		 	{name:'e',age:50},
	 		 	]
	 		 };	
	 		tpl.append('tmp',company);
	 		
	 		 /*
	 		 var tplData=[
	 		 	{name:'a',age:10},
	 		 	{name:'b',age:20},
	 		 	{name:'c',age:30},
	 		 	{name:'d',age:40},
	 		 	{name:'e',age:50},
	 		 ];
	 		 tpl.append('tmp',tplData);
	 		 */
	 	});

 子对象中访问父对象的属性要使用“parent.”。

 

 

3 自动渲染简单数组:

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);
	 		
	 		 /*
	 		  var company={
	 		 	companyName:'IBM',
	 		 	emps:[
	 		 		{name:'a',age:10},
		 		 	{name:'b',age:20},
		 		 	{name:'c',age:30},
		 		 	{name:'d',age:40},
		 		 	{name:'e',age:50},
	 		 	]
	 		 };	
	 		 var tplData=[
	 		 	{name:'a',age:10},
	 		 	{name:'b',age:20},
	 		 	{name:'c',age:30},
	 		 	{name:'d',age:40},
	 		 	{name:'e',age:50},
	 		 ];
	 		 tpl.append('tmp',tplData);
	 		 */
	 	});

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

 

4:使用基本逻辑判断

Ext.onReady(function(){
	 		 var tpl=new Ext.XTemplate(
	 		    '<table border=1>',
	 		 	'<tr><td>姓名</td><td>年龄</td><td>COM</td></tr>',
	 		 	'<tpl for="emps">',
	 		 	'<tpl if="age &gt; 20">',
	 		 	'<tr><td>{#}</td><td>{name}</td><td>{age}</td></tr>',
	 		 	'</tpl>',
	 		 	'</tpl>',
	 		 	'</table>'
	 		 	) ;
	 		
	 		 var company={
	 		 	companyName:'IBM',
	 		 	emps:[
	 		 		{name:'a',age:10},
		 		 	{name:'b',age:20},
		 		 	{name:'c',age:30},
		 		 	{name:'d',age:40},
		 		 	{name:'e',age:50},
	 		 	]
	 		 };	
	 		tpl.append('tmp',company);
	 		
	 		 /*
	 		 var array=['a','b','c','d','e'];
	 		 
	 		 var tplData=[
	 		 	{name:'a',age:10},
	 		 	{name:'b',age:20},
	 		 	{name:'c',age:30},
	 		 	{name:'d',age:40},
	 		 	{name:'e',age:50},
	 		 ];
	 		 tpl.append('tmp',tplData);
	 		 */
	 	});

  (&gt; 表示>  , &lt; 表示<)

 

5: 在模板中执行任意代码

 

	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);
	 		
	 		 /*
	 		 var array=['a','b','c','d','e'];
	 		 
	 		 var tplData=[
	 		 	{name:'a',age:10},
	 		 	{name:'b',age:20},
	 		 	{name:'c',age:30},
	 		 	{name:'d',age:40},
	 		 	{name:'e',age:50},
	 		 ];
	 		 tpl.append('tmp',tplData);
	 		 */
	 	});

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

parent:父模板的值对象

xindex:循环模板的索引

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

 

6 在Extjs 组件中使用模板:

	Ext.onReady(function(){
	 		 var tpl=new Ext.XTemplate( 
	 		 			'<div class="x-combo-list{[xindex%2==0?"even":"odd"]}">',
	 		 			 
	 		 			'{#}:{[this.check(values)]}</div>',
	 		 			{
	 		 				check:function(values){
	 		 					if(values.value>2){
	 		 						return "<font color=red>"+values.item+"</font>";
	 		 					}else{
	 		 						return "<font color=blue>"+values.item+"</font>";
	 		 					}
	 		 				}
	 		 			}
	 		 	) ;
	 		 
	 		Ext.regModel('ItemInfo',{
	 			fields:['item','value']
	 		})
	 		var panel=Ext.create('Ext.panel.Panel',{
	 			title:'数组使用模板',
	 			renderTo:Ext.getBody(),
	 			height:500,
	 			width:1200,
	 			items:[
	 				{
	 					xtype:'combo',
	 					fieldLabel:'邮编',
	 					displayField:'item',
	 					valueField:'value',
	 					labelSeparator:':',
	 					listConfig:{
	 						itemTpl:tpl
	 					},
	 					editable:false,
	 					queryMode:'local',
	 					store:new Ext.data.Store({
	 						model:'ItemInfo',
	 						fields:['item','value'],
	 						data:[
	 							{item:'a',value:1},
	 							{item:'b',value:2},
	 							{item:'c',value:3},
	 							{item:'d',value:4},
	 							{item:'e',value:5},
	 							{item:'f',value:6},
	 						]
	 					})
	 				}
	 			]
	 		});
	 		tpl.append('tmp',tplData);
	 		
	 		 /*
	 		 var array=['a','b','c','d','e'];
	 		 
	 		 var tplData=[
	 		 	{name:'a',age:10},
	 		 	{name:'b',age:20},
	 		 	{name:'c',age:30},
	 		 	{name:'d',age:40},
	 		 	{name:'e',age:50},
	 		 ];
	 		 tpl.append('tmp',tplData);
	 		 */
	 	});
 

许多组件中都可以使用模板,他们一般表现为tpl配置项,通过为该配置提供相应的模板就可以改变组件默认的表现方式,可以进行一些个性化的定制。

 

分享到:
评论

相关推荐

    extjsExtjs学习笔记——多个图片XTemplate排版居中,自动缩放处理

    在本文中,我们将深入探讨如何使用ExtJS的XTemplate来实现多张图片的居中排版和自动缩放处理。ExtJS是一个强大的JavaScript框架,它提供了丰富的组件和模板功能,帮助开发者构建用户界面。XTemplate是ExtJS中的一个...

    给Extjs的GridPanel增加“合计”行

    - 定义一个合计行的模板,可以使用EXTJS的XTemplate。模板中包含合计值的占位符,这些占位符将在数据计算完成后被替换为真实的合计值。 4. **插入合计行到DOM**: - 在自定义View的`onRender`方法中,找到...

    Extjs 计算器 javascript计算器

    1. `help.chm`:这可能是帮助文档,以CHM(Microsoft Compiled HTML Help)格式存储,供用户参考计算器的使用方法。 2. `PBVM70.DLL`:这可能是PowerBuilder运行时库的一部分,可能与计算器的某些功能有关,但通常不...

    extjs模板的使用

    - 除了上述的基本用法,`Ext.XTemplate` 还支持更多的高级特性,如内联函数、三元运算符、循环嵌套等,可以满足复杂的数据展示需求。 - 可以使用 `tpl.apply(data)` 或 `tpl.overwrite(domElement, data)` 方法将...

    轻松搞定Extjs

    本章详细介绍了Extjs提供的多种消息框类型及其使用方法。 - **话说消息框**: 阐述了消息框的重要性及应用场景。 - **最简单的消息框——提示框**: 通过示例展示了如何创建一个基本的消息提示框。 - **输入框**: ...

    ExtJS中文手册.pdf

    - **新组件**:ExtJS 2引入了许多新的组件,如Grid、XTemplate、DataView等。 通过以上内容的详细介绍,我们不仅能够了解到ExtJS的基本用法,还能够深入掌握其高级特性,从而更加高效地利用ExtJS进行Web应用的开发...

    Extjs 4.2分组小计

    使用`summaryRenderer`,结合Ext.XTemplate,可以创建包含多个统计信息和格式化的小计行。 总结,ExtJS 4.2的分组小计功能强大且灵活,能有效地帮助开发者构建具有数据分析功能的Web应用。通过理解并熟练运用上述...

    extjs可视化设计器

    5. **模板和样式**:学习EXTJS的模板语言(XTemplate)和CSS样式,定制组件的外观和格式。 6. **导出和导入代码**:知道如何将设计好的界面导出为EXTJS代码,并能将已有的EXTJS代码导入到设计器中进行编辑。 7. **...

    ExtJS效果Tabs形式

    例如,你可以创建一个Ext.XTemplate模板,并使用`loadRecord`方法加载数据模型到Panel中: ```javascript var template = new Ext.XTemplate( '&lt;div class="content"&gt;{name}&lt;/div&gt;', '&lt;p&gt;{description}&lt;/p&gt;' );...

    解决extjs 桌面图标换行方法

    ### 解决ExtJS桌面图标换行方法 #### 知识点概述 本文档将详细介绍如何在ExtJS框架中实现桌面图标的自动换行功能。在许多应用中,特别是在模仿桌面环境的应用程序中,桌面图标(通常称为快捷方式)的布局至关重要...

    Extjs2.0中文文档

    这里也会提到Extjs的OOP特性和配置选项的使用方法。 2. **消息框的使用**:Ext.js提供了封装好的消息框组件,使开发人员可以非常方便地展示消息、警告、确认框等。文档会介绍各种不同类型的预定义消息框,例如提示...

    extjs多选下拉框

    1. **扩展ComboBox**: 多选下拉框通常是基于EXTJS的ComboBox进行扩展,添加新的配置项和方法来支持多选。例如,可以添加一个`allowMultiple`配置项,当其值为`true`时启用多选模式。 2. **数据存储**:在多选模式下...

    ExtJS模板使用说明(含代码示例).zip

    在本说明中,我们将深入探讨ExtJS中的模板(Template)使用,包括其概念、创建方法、以及如何结合代码示例进行实际应用。 一、ExtJS模板简介 在ExtJS中,模板是一种便捷的方式,用于动态生成HTML内容。它们通常与...

    Extjs树Demo

    7. **API和文档**:学习ExtJS树形结构的最佳资源是官方文档,其中详细介绍了各种配置项、方法和事件,同时还有很多示例代码供参考。 通过上述步骤,你可以创建出具有交互性的、动态加载数据的ExtJS树形结构。在实际...

    extjs自定义控件

    4. **实例化与使用自定义控件** - **创建实例**:在应用中通过`new`关键字实例化自定义控件,传递必要的配置项。 - **添加到容器**:将自定义控件添加到容器(如`Ext.container.Viewport`或`Ext.Panel`)中,以便...

Global site tag (gtag.js) - Google Analytics