- 浏览: 592477 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
青春依旧:
html5教学哪家强!当然要上华清远见!
深入理解浏览器兼容性模式 -
ashur:
真机智,看得我都笑自己了
js 字符串转dom 和dom 转字符串 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
solr第一弹 autocomplete(自动补全) -
FakLove:
连线如何删除啊
基于html5 的拖拽连线 -
FakLove:
连线可以再删除吗?
基于html5 的拖拽连线
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 > 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); */ });
(> 表示> , < 表示<)
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配置项,通过为该配置提供相应的模板就可以改变组件默认的表现方式,可以进行一些个性化的定制。
发表评论
-
浏览器事件是冒泡还是捕获
2016-07-27 16:37 3019这是三种事件处理的模型 (1)冒泡型事件:事件按照从最特定 ... -
javascript 编程反思1 new 原理
2016-04-27 14:05 0我们在定义对象的时候通常使用两种方式 1:通过new 关键 ... -
javascript 设计模式1 单例模式
2015-06-15 15:10 0... -
facebook html5开发app 失败的原因,
2015-06-08 11:56 1956Here’s why the Facebook iOS a ... -
jQuery zepto 用法区别
2015-05-22 11:50 0以前都是用jQuery 因为移动项目中在使用zepto 基本 ... -
js 加载机制和defer async用法
2015-05-15 17:45 0这是今天我一个 ... -
grunt 不是内部命令
2015-05-04 19:21 1458grunt 不是内部命令!! ... -
你不知道的URL中#井号用法
2015-02-10 12:36 7079URL 中 # 井号的用法 ... -
JS 伪数组原理详解
2014-12-01 11:24 2487jav ... -
jquery 滚动条插件nanoScroller 的用法
2014-11-27 11:17 5699scroller 插件nanoSc ... -
h5,hybrid 开发中问题汇总
2014-10-17 11:26 8205H5开发问题总结 和jqu ... -
backbone中的 reuter 和histroy
2014-10-13 10:45 624Router和History (路由控制) Back ... -
animate 技术分析 raphael
2014-07-28 16:40 0Animate 什么是animate,一般我 ... -
Raphaeljs 插件实现任意SVG节点加载
2014-07-14 09:26 8623SVG 和Raphael http://rap ... -
ECMAScript 5
2014-07-08 14:36 1056新版本在给基本库带来 ... -
jQueryUI Widget 代码详解
2014-07-07 12:20 0为什么需要研究JqueryUI 中Widget 的代码 ... -
typescript 用法介绍
2014-07-01 09:58 1237前言 Typescript的形態 如何定義va ... -
window.eval 与eval 区别
2014-06-27 10:57 1083它们之间有区别吗? 开发过程中似乎很少有人去加个额外的win ... -
jQuery 学习分析系列1 jQuery是个什么东西
2014-06-23 10:06 0jQuery 的基本结构 过去使用jQuery ... -
Sizzle 引擎--原理与实践3
2014-06-18 14:05 787Sizzle引擎--原理与实践(三) 查找的入口对 ...
相关推荐
在本文中,我们将深入探讨如何使用ExtJS的XTemplate来实现多张图片的居中排版和自动缩放处理。ExtJS是一个强大的JavaScript框架,它提供了丰富的组件和模板功能,帮助开发者构建用户界面。XTemplate是ExtJS中的一个...
- 定义一个合计行的模板,可以使用EXTJS的XTemplate。模板中包含合计值的占位符,这些占位符将在数据计算完成后被替换为真实的合计值。 4. **插入合计行到DOM**: - 在自定义View的`onRender`方法中,找到...
### 知识点概述 #### 1. Extjs概念与目录结构 Extjs是一个基于JavaScript的框架,用于构建交互式的web应用。...通过学习本书,读者能够全面掌握Extjs的各种特性,进而使用Extjs开发出功能强大、交互良好的Web应用。
1. `help.chm`:这可能是帮助文档,以CHM(Microsoft Compiled HTML Help)格式存储,供用户参考计算器的使用方法。 2. `PBVM70.DLL`:这可能是PowerBuilder运行时库的一部分,可能与计算器的某些功能有关,但通常不...
- 除了上述的基本用法,`Ext.XTemplate` 还支持更多的高级特性,如内联函数、三元运算符、循环嵌套等,可以满足复杂的数据展示需求。 - 可以使用 `tpl.apply(data)` 或 `tpl.overwrite(domElement, data)` 方法将...
【ExtJs4_笔记】 本笔记详尽地探讨了ExtJs4框架的多个核心功能,包括DOM操作、JS语法扩展、Ajax支持、模板系统、按钮、消息对话框、提示、滚轴与进度条控件、面板与窗口、布局管理、选项卡、数据视图、工具栏、分页...
本章详细介绍了Extjs提供的多种消息框类型及其使用方法。 - **话说消息框**: 阐述了消息框的重要性及应用场景。 - **最简单的消息框——提示框**: 通过示例展示了如何创建一个基本的消息提示框。 - **输入框**: ...
- **新组件**:ExtJS 2引入了许多新的组件,如Grid、XTemplate、DataView等。 通过以上内容的详细介绍,我们不仅能够了解到ExtJS的基本用法,还能够深入掌握其高级特性,从而更加高效地利用ExtJS进行Web应用的开发...
使用`summaryRenderer`,结合Ext.XTemplate,可以创建包含多个统计信息和格式化的小计行。 总结,ExtJS 4.2的分组小计功能强大且灵活,能有效地帮助开发者构建具有数据分析功能的Web应用。通过理解并熟练运用上述...
5. **模板和样式**:学习EXTJS的模板语言(XTemplate)和CSS样式,定制组件的外观和格式。 6. **导出和导入代码**:知道如何将设计好的界面导出为EXTJS代码,并能将已有的EXTJS代码导入到设计器中进行编辑。 7. **...
例如,你可以创建一个Ext.XTemplate模板,并使用`loadRecord`方法加载数据模型到Panel中: ```javascript var template = new Ext.XTemplate( '<div class="content">{name}</div>', '<p>{description}</p>' );...
### 解决ExtJS桌面图标换行方法 #### 知识点概述 本文档将详细介绍如何在ExtJS框架中实现桌面图标的自动换行功能。在许多应用中,特别是在模仿桌面环境的应用程序中,桌面图标(通常称为快捷方式)的布局至关重要...
这里也会提到Extjs的OOP特性和配置选项的使用方法。 2. **消息框的使用**:Ext.js提供了封装好的消息框组件,使开发人员可以非常方便地展示消息、警告、确认框等。文档会介绍各种不同类型的预定义消息框,例如提示...
1. **扩展ComboBox**: 多选下拉框通常是基于EXTJS的ComboBox进行扩展,添加新的配置项和方法来支持多选。例如,可以添加一个`allowMultiple`配置项,当其值为`true`时启用多选模式。 2. **数据存储**:在多选模式下...
在本说明中,我们将深入探讨ExtJS中的模板(Template)使用,包括其概念、创建方法、以及如何结合代码示例进行实际应用。 一、ExtJS模板简介 在ExtJS中,模板是一种便捷的方式,用于动态生成HTML内容。它们通常与...
7. **API和文档**:学习ExtJS树形结构的最佳资源是官方文档,其中详细介绍了各种配置项、方法和事件,同时还有很多示例代码供参考。 通过上述步骤,你可以创建出具有交互性的、动态加载数据的ExtJS树形结构。在实际...