`
rayln
  • 浏览: 430522 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Extjs模板的使用(XTemplate 和 Template)

 
阅读更多
转载: http://dengm1010.iteye.com/blog/376555

Ext.onReady(function(){
	Ext.onReady(function(){
		//定义模板 使用标签tpl和操作符for
		var tpl1 = new Ext.XTemplate(
			'<table border=1 cellpadding=0 cellspacing = 0>',
			'<tr><td width=90 >姓名</td><td width=90 >年龄</td></tr>',
			'<tpl for=".">',
			'<tr><td>{name}</td><td>{age}</td></tr>',
			'</tpl>',
			'</table>'
		);
		
		//通过自定义格式化函数解析json对象  {stature:this.parseJson()}
		var tpl2 = new Ext.Template(
			'<table border=1 cellpadding=0 cellspacing = 0>',
			'<tr><td width=90 >姓名</td>',
			'<td width=120>{name}</td></tr>',
			'<tr><td width=90 >年龄</td>',
			'<td width=120>{age}</td></tr>',
			'<tr><td width=90 >身高</td>',
			'<td width=120>{stature:this.parseJson()}</td></tr>',
			'</table>'
		);
		
		tpl2.parseJson = function(json){
			return json.num + json.unit;
		}
		
	//数组索引与简单数学运算 {#}	每一项都加上序号
	 var tpl3 = new Ext.XTemplate(
	 	'<table border=1 cellpadding=0 cellspacing = 0>',
	 	'<tr><td>序号</td><td width=90 >姓名</td><td width=90 >工资</td></tr>',
	 	'<tpl for=".">',
	 	'<tr><td>{#}</td><td>{name}</td><td>{wage * .9}</td></tr>',
	 	'</tpl>',
	 	'</table>'
	 );
	
	 //自动渲染简单数组  使用特殊变量{.}可循环输出
	 var tpl4 = new Ext.XTemplate(
	 	'<table border=1 cellpadding=0 cellspacing = 0>',
			'<tr><td>序号</td><td width=90 >姓名</td></tr>',
			'<tpl for=".">',
			'<tr><td>{#}</td><td>{.}</td></tr>',
			'</tpl>',
			'</table>'
	 );
	 
	 //基本的条件逻辑判断  这没有else的操作符 如需要,就要写两个逻辑相反的if的语句
	 //输出工资大于1000的员工信息 工资 * 0.9
	 var tpl5 = new Ext.XTemplate(
	 	'<table border=1 cellpadding=0 cellspacing = 0>',
	 	'<tr><td>序号</td><td width=90 >姓名</td><td width=90 >工资</td></tr>',
	 	'<tpl for=".">',
	 	'<tpl if="wage &gt; 1000">',
	 	'<tr><td>{#}</td><td>{name}</td><td>{wage * .9}</td></tr>',
	 	'</tpl>',
	 	'</tpl>',
	 	'</table>'
	 );
	 
	 	//定义组合框模板  xindex:若是循环模板,这是当前循环的索引index(从1开始)。
	 	//			   values:当前作用域下的值	
		var itemTpl = new Ext.XTemplate(
			'<tpl for=".">',
			'<div class="x-combo-list-item {[xindex % 2 == 0 ? "even" : "odd"]}">',
			'{#} :{[this.check(values)]}</div>',
			'</tpl>',
			{
				check : function (values) {
					if(values.value > 2 ){
						return "<font color=red>"+values.item+"</font>";
					}else {
						return "<font color=blue>"+values.item+"</font>";
					}
				}
			}
		)
		new Ext.form.FormPanel({
			applyTo :'target',
			title:'在Extjs组件中使用模板',
			labelSeparator :':',//分隔符
			height : 100,
			frame : true,
			width : 350,
			items : [
				new Ext.form.ComboBox({
					fieldLabel:'combo',
					displayField:'item',
					valueField:'value',
					tpl : itemTpl,//引入自定义模板
					editable : false,
					mode: 'local',
					triggerAction: 'all',
					store : new Ext.data.SimpleStore({
						fields: ['item','value'],
						data : [['条目1',1],['条目2',2],['条目3',3],
						        ['条目4',4],['条目5',5],['条目6',6]]
					})
				})
			]
		});
	 
	
		var productTpl = new Ext.XTemplate(
			'<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>'
		);
		Ext.get('addProduct').on('click',function(){
			var pname = Ext.get('productName').getValue();
			var pnum = Ext.get('productNum').getValue();
			var pprice = Ext.get('productPrice').getValue();
			productTpl.append('product-table',[pname,pnum,pprice]);
		});
	 
	 //定义模板数据
		var data1 = [
			{name:'张三',age:20},
			{name:'李四',age:25},
			{name:'王五',age:27},
			{name:'赵六',age:26}
		];
		
		var data2 = {
			name : 'tom',
			age : 24,
			stature : {
				num : 170,
				unit : '厘米'
			}
		};
		
		var data3= [
				{name : '张三',wage : 1000},
				{name : '李四',wage : 1200},
				{name : '王五',wage : 900},
				{name : '赵六',wage : 1500}
			];
		
		var data4 = ['张三','李四','王五','赵六'];
		
		
		//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
		tpl1.append('tpl-1',data1);
		tpl2.append('tpl-2',data2);
		tpl3.append('tpl-3',data3);
		tpl4.append('tpl-4',data4);
		tpl5.append('tpl-5',data3);
	});
});


html代码
<div id='tpl-1'></div>
	<br>
	<div id="tpl-2"></div>
	<br>
	<div id="tpl-3"></div>
	<br>
	<div id="tpl-4"></div>
	<br>
	<div id="tpl-5"></div>
	<br>
	<div id="target"></div>
	<br>
	产品名称:<input type="text" id="productName"><br>
	产品数量:<input type="text" id="productNum"><br>
	产品价格:<input type="text" id="productPrice">
	<input type="button" value="增加产品" id='addProduct'>
	<table id='product-table' border=1 cellspacing=0 cellpadding=0>
		<tr>
			<td width=160>产品名称</td><td width=75>数量</td><td width=75>金额</td>
		</tr>
	</table>
分享到:
评论

相关推荐

    extjs模板的使用

    在实际开发中,熟练掌握 `Ext.XTemplate` 的使用能够提高页面的交互性和数据展示效率,使得前端界面更加灵活和智能化。通过合理的模板设计,开发者可以轻松地将后端提供的数据转化为用户友好的界面元素,从而提升...

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

    一、ExtJS模板简介 在ExtJS中,模板是一种便捷的方式,用于动态生成HTML内容。它们通常与数据对象结合使用,通过数据绑定将数据转换为可渲染的HTML。模板使用特殊的语法,允许在字符串中嵌入变量和表达式,使得数据...

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

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

    Extjs事件和模板

    EXTJS提供了两种主要的模板类型:String Template和XTemplate。String Template是基于字符串的模板,使用简单的替换语法,如`{name}`表示占位符;而XTemplate则更加强大,支持复杂的条件判断、循环、函数调用等。...

    ExtJS效果Tabs形式

    在ExtJS中,你可以使用HTML模板(Template)和数据绑定(Data Binding)来动态生成标签页的内容。例如,你可以创建一个Ext.XTemplate模板,并使用`loadRecord`方法加载数据模型到Panel中: ```javascript var ...

    ExtJS使用笔记

    Ext.Template和Ext.XTemplate是用于处理模板的类,能够实现内容的动态插入和渲染。通过模板可以快速定义数据的展示方式,提高开发效率。 ExtJS中的Event、Component和Container是构建复杂用户界面的基础。Component...

    extjs实例说明详解

    JSON Format用于处理JSON数据,DelayedTask和TaskRunner用于定时任务,TextMetrics用于计算文本的尺寸,XTemplate则是一种强大的模板引擎,方便数据和视图的绑定。 总的来说,这个资源涵盖了ExtJS的大部分基础API,...

    精通JS脚本之ExtJS框架.part2.rar

    本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、...

    ExtJs 类的设计

    ExtJs提供了丰富的组件体系,许多类支持使用模板(Template)来生成HTML内容。例如,`Ext.XTemplate`可以用于动态生成复杂的视图。 8. **扩展性与模块化** ExtJs的类设计考虑了扩展性和模块化,通过组合多个小...

    Extjs带图片下拉框

    默认情况下,ComboBox仅显示文本选项,但通过自定义模板和渲染函数,我们可以添加图片元素,使其更生动、更具表现力。 1. **创建数据源**: 在创建带图片的下拉框之前,我们需要一个数据源,通常是一个Store对象,...

    ExtJS4.0下的gridPanel组建完全版

    它使用Ext.XTemplate或Ext.Template进行模板渲染,并使用Scroller或paging toolbar来支持滚动和分页功能。 5. **GridPanel的高级特性**:除了基本功能外,GridPanel还提供了许多高级特性,如拖放排序、行编辑、分组...

    老师整理的extjs学习笔记

    `Ext.XTemplate` 类似于 `Ext.Template`,但它更加强大和灵活,支持更复杂的逻辑和数据处理。例如,它可以用于遍历数组或对象,并根据条件生成不同的 HTML 内容。 #### 三、Event、Component and Container **3.1 ...

    精通JS脚本之ExtJS框架.part1.rar

    本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、...

    ExtJs入门实例

    ### ExtJs2.0入门实例知识点详解 #### 1. Ext.MessageBox ...以上是ExtJs2.0中的一些基础控件和方法的详细介绍,通过这些内容可以帮助初学者快速入门,并掌握如何使用这些控件进行Web应用程序开发。

    EXTJS___API详解

    EXTJS是一个强大的JavaScript框架,用于构建富客户端应用程序。其API详解涵盖了众多核心...EXTJS的API详尽且强大,这些只是其中一部分,实际使用中还有许多其他类和方法,为开发者提供了构建复杂Web应用的全面工具集。

    PacktPub.Mastering.Ext.JS.Jul.2013

    3. **视图和视图模型**:了解如何使用ViewModel来连接视图和数据,以及如何使用模板(Template)和XTemplate来渲染复杂的数据结构。 4. **图表和图形**:掌握Ext JS的图表组件,如柱状图、折线图、饼图等,以及如何...

    icon combobox

    Icon Combobox的实现主要通过ExtJS的组件模型,利用Combobox的基础结构,并在模板(template)中添加图标元素。开发者可以定义一个包含图标和文本的模板,然后在创建Combobox实例时,设置相应的配置项,如图标URL、...

    ext RowExpander 内 加载组件

    EXTJS是一个流行的JavaScript UI框架,提供了丰富的组件和功能,使得开发者能够构建功能强大的企业级应用。 "RowExpander"组件是EXTJS中的一种扩展,它允许用户在表格的每一行旁边添加一个可折叠的图标。当用户点击...

Global site tag (gtag.js) - Google Analytics