`
minzaipiao
  • 浏览: 146108 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

extjs模板的使用

阅读更多
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);
	});
});



tpl.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>
分享到:
评论
4 楼 laijm1985 2012-08-08  
谁告诉你TPL没有else的,别在这误导人
        '<tpl if="age &gt;= 13">',
        '<p>teenager</p>',
        '<tpl elseif="age &gt;= 2">',
            '<p>kid</p>',
        '<tpl else>',
            '<p>baby</p>',
        '</tpl>',
3 楼 wentao365 2009-07-08  
请教一下:我参考你的例子,扩展了一下:
    Ext.onReady(function() {
        Ext.onReady(function() {
            /**
             * 例子2:
             *      通过自定义格式化函数解析json对象  {stature:this.parseJson()}
             * @param json
             */
            var tpl2 = new Ext.Template(
                    '<table border=1 cellpadding=0 cellspacing = 0>',
                    '<tr><td width=90 >姓名</td>',
                    '<td width=120>{name:this.parseName()}</td></tr>',
                    '<tr><td width=90 >年龄</td>',
                    '<td width=120>{age:this.parseAge()}</td></tr>',
                    '<tr><td width=90 >身高</td>',
                    '<td width=120>{stature:this.parseStature()}</td></tr>',
                    '</table>',
                    '<hr>'
                    );

            //自定义函数
            tpl2.parseName = function(name) {
                return name + "@gmail.com";
            }
            tpl2.parseAge = function(age) {
                return age + '岁';
            }
            tpl2.parseStature = function(stature) {
                return stature.num + stature.unit;
            }

            var data2 = {
                name : 'tom',
                age : 24,
                stature : {
                    num : 170,
                    unit : '厘米'
                }
            };
            tpl2.append('tpl-2', data2);
        });
    });



结果很奇怪:界面如图:



年龄那项目显示不出来了。 如果 姓名和年龄那里直接用{name}和{age} 则 姓名,年龄,身高都能正常显示,为什么增加了 parseName和parseAge就影响parseAge呢?
2 楼 minzaipiao 2009-06-11  
fuwei1688 写道
非常不错.兄弟受益匪浅.但是如果我要在模板中加入一个ToolTip如何做呢?



首先要在 你js第一行加入

Ext.QuickTips.init();

第二在你想要加入tooltip的地方如<td> <div> <input> 加入 ext:qtip属性
ext:qtip="你的内容"
代码:
var tpl2 = new Ext.Template(
			'<table border=1 cellpadding=0 cellspacing = 0>',
			'<tr><td width=90 ext:qtip="这是你的名字..">姓名</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>'
		);

1 楼 fuwei1688 2009-06-09  
非常不错.兄弟受益匪浅.但是如果我要在模板中加入一个ToolTip如何做呢?

相关推荐

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

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

    EXTJS网站模板

    类似WINDOWS桌面的extjs模板,

    ExtJS项目后台模板

    已经整理,能直接看效果的哦,用着不错,要使用的拿走吧

    extjs 项目

    extjs 项目样例 extjs 模板式代码 结构清晰

    Extjs后台管理模板

    这是我用Extjs做的后台管理模板 只是个框架 我也是个初学者,刚开始学习它的时候 都是自己去看资料学习的,当时很希望有个这样的框架模板那样的话就可以照着模板做了,省了很多时间 这里我给了一个后台布局的一个...

    extjs漂亮的网站模板

    漂亮 网站 模板 超酷 漂亮 网站 模板 超酷 漂亮 网站 模板 超酷

    Extjs 通用后台模板| 经典 Tree+Tab+Grid

    Extjs (Tree+Tab+Grid)通用后台模板,全静态数据,下载即可看效果。可以完全套用。

    ExtJS 界面设计器

    Extjs界面设计器,可以根据可视化的设计界面,通过拖动组件和修改属性的方法,生成Extjs脚本,对于Extjs开发有很大的帮助,

    spingmvc+Extjs4快速框架模板

    java web快速开发脚手架,内置一个基于数据库的代码生成器rapid-generator,极易...模板定义为extjs4MVC+springmvc三层模式,只需配置generator.xml后执行generator/GeneratorMain.java中main方法即可生成规范的源代码。

    extjs后台界面模板3.zip

    extjs后台界面模板,实现了机构、用户、角色、权限模块的界面。顶部为菜单栏,中间分左、右两部分,左侧为机构树,右侧为查询列表,可动态添加、修改、删除机构节点。

    extjs4 模板值和模板

    extjs4 模板值和模板 1、append方法 Javascript代码 var tpl = new Ext.Template(//定义模板 '&lt;table border=1 cellpadding=0 cellspacing = 0&gt;', '&lt;tr&gt;&lt;td width=90&gt;姓名&lt;/td&gt;&lt;td width=90&gt;{0}&lt;/td&gt;&lt;/tr&gt;', ...

    extjs6.2 admin-dashboard模板

    extjs6.2 admin-dashboard 官方提供的管理应用程序模板

    Extjs 后台模板

    这是用Extjs做的后台管理模板,前面做的那个有点粗糙 顺便说一下CSDN怎么不让我删除自己上传的资源,这也太不人性化了吧。

    基于Extjs 4.2的通用权限管理系统,通用后台模板,EF+MVC+Extjs 4.2

    整个WMC系统分为WMC2.0-Server服务端,和WMC2.0-Client客户端两部分组成,您刚刚下载的这个是客户端模板,客户端需要依托服务端Server来运行的,只有配合了服务端,才能使用通用权限系统,包括1.用户中心;2.组织...

    extjs6.2 executive-dashboard模板

    extjs6.2 executive-dashboard为官方提供的响应式应用程序模板

    基于ExtJS3的后台管理系统模板

    项目特点: 1、基于ExtJS 3.4版本实现,采用...5、使用JSON,模拟从后台动态获取数据; 注意事项: 因为file协议不支持Ajax获取数据,所以请把该项目部署到Nginx、Apache或Tomcat等Web服务器,然后通过http协议访问。

    Extjs2.0 智能提示

    Extjs2.0 智能提示

    jQuery easyui ,extjs,html200套模板+仿WEBQQ8套模板后台模板

    200套后台管理模板(包含jquery easyui,extjs,html后台模板)+10套webQQ模板(已经分类),包含各种模板,适用各种场景,怎有一套适合你

    ExtJs界面嵌套源码

    ExtJs的页面布局、界面设计的源码 直接运行index.html可看效果,源码在里面

Global site tag (gtag.js) - Google Analytics