Javascript - ExtJs - XTemplate组件
XTemplate组件(Ext.XTemplate)
如果有一些重复的html代码需要装入数据,可以考虑使用XTemplate模板组件。XTemplate可以填入数组、对象,支持条件判断、for循环、基本的数学运算、变量占位符。
<div id="div1" ></div>
<script type="text/javascript">
Ext.onReady(function () {
var data = {
name: '寒食',
age: '32岁',
character: ['易怒', '嗔念', '抑郁'],
friends: [
{
name: 'sam',
age: 32
},
{
name: '王五',
age: 26
}
]
};
var tpl = new Ext.XTemplate(
'<table style="border-collapse:collapse;width:300px;" border="1">',
'<tr><td>姓名</td><td>{name}</td></tr>',
'<tr><td>年龄</td><td>{age}</td></tr>',
'<tr><td>性格</td><td>{character}</td></tr>',
'<tr>',
'<td>朋友</td>',
'<td>',
'<tpl for="friends">',<!--tpl表示模板的脚本标签-->
'<p>姓名:{name},年龄:{age}</p>',
'</tpl>',
'</td>',
'<tr>'
);
//将data放进模板,遇到{}占位符时,取出data中对应的属性填充进占位符
//遇到tpl脚本标签的for时将执行for循环,循环以for指向的对象为目标,将对象的属性填充到{}中
//最终将模板装入div1中
tpl.overwrite(Ext.get("div1"), data);
});
</script>
示例

基本运算
占位符支持简单运算
'{ age+1 }'
tpl脚本标签
tpl支持条件判断、for循环等,写脚本时必须声明一个tpl,多个脚本就要声明多个tpl,当为true时,该tpl包含的html标签会被填充。
<tpl if="age < 18">{ name }:未成年 </tpl> //条件判断,比较运算符必须转换为html编码后的格式,不能直接写出。
访问父对象
在子对象的作用域中使用关键字parent访问父对象
{ parent.property } //如
'<p>姓名:{name},年龄:{age+1} 是 {parent.name}的朋友</p>',
循环中的索引
//{#}是当前循环的编号,从1开始
'<p>{#}姓名:{name},年龄:{age+1} 是{parent.name}的朋友</p>',
模板特殊变量
特殊变量的访问规则是,tpl属性内可直接访问,不是在tpl的属性内访问则需要写:{ [ 变量 ] },为什么要这样写?因为不写则会被视为字符串,就这么简单。
values:模板作用域中的值。即父对象的属性(一个对象)。
parent:父级模板的对象。
xindex:循环模板中的循环索引index(从1开始)。
xcount:循环模板中的循环总次数。
'<tpl if="xcount==2"><b>测试</b></tpl>' //tpl属性内可直接访问特殊变量
'<tpl if="xcount==2"><b>测试{[xindex]}</b></tpl>' //tpl属性外访问特殊变量则格式是:{ [ 变量 ] }
模板函数
模板的第二个参数可使用Json格式定义函数。
var tpl = new Ext.XTemplate( 此参数略 ,
{
Test: function () { return "Test"}
}
); '<p>姓名:{name},{ [ this.Test() ] }</p>',
Javascript - ExtJs - XTemplate组件的更多相关文章
- Javascript - ExtJs - GridPanel组件
GridPanel组件(Ext.grid.GridPanel)logogram:Ext.grid.Panel | xtype:gridpanel 此类派生自Ext.Panel,创建表格需要两个必须的对 ...
- Javascript - ExtJs - ToolTip组件
一个浮动的提示信息组件…… Ext, //可选 指定箭头的位置 anchor: 'buttom', ...
- Javascript - ExtJs - Window组件
1.所有组件都可以放入window,此时子组件不需要配置renderTo,只需要将它们作为window的items子项即可. 2.items子项必须先创建,最后创建window,否则子项不会显示. 3 ...
- Javascript - ExtJs - TreePanel组件
TreePanel组件(Ext.tree.TreePanel)logogram:Ext.tree.Panel | xtype:treepanel 树与节点 树面板组件的根是源头,从根上拓展出其它的子节 ...
- Javascript - ExtJs - GridPanel组件 - 编辑
GridPanel组件 - 编辑 Ext.grid.plugin.Editing 如果要对表格使用列编辑器控件,则需要完成以下几步 1.将columns中需要编辑的列设为editor并提供编辑列时所要 ...
- Javascript - ExtJs - TabPanel组件
示例 Ext.create('Ext.tab.Panel', { width: "100%", renderTo: "tabBox", ...
- Javascript - ExtJs - Ext.form.Panel组件
FormPanel组件(Ext.form.FormPanel) logogram:Ext.form.Panel | xtype:form Ext.form.Panel.配置 frame }//旗下所有 ...
- Twproject Gantt – 开源的 JavaScript 甘特图组件
Twproject Gantt 是一款基于 jQuery 开发的甘特图组件,也可以创建其它图表,例如任务树(Task Trees).内置编辑.缩放和 CSS 皮肤等功能.更重要的是,它是免费开源的. ...
- 实用ExtJS教程100例-008:使用iframe填充ExtJS Window组件
上面两节中我们分别演示了ExtJS Window的常用功能 和 如何最小化ExtJS Window组件,在这篇内容中我们来演示一下如何使用iframe填充window组件. 思路很简单,首先创建一个w ...
随机推荐
- Linux 多线程 - 线程异步与同步机制
Linux 多线程 - 线程异步与同步机制 I. 同步机制 线程间的同步机制主要包括三个: 互斥锁:以排他的方式,防止共享资源被并发访问:互斥锁为二元变量, 状态为0-开锁.1-上锁;开锁必须由上锁的 ...
- Luogu P4070 [SDOI2016]生成魔咒
题目链接 \(Click\) \(Here\) 其实是看后缀数组资料看到这个题目的,但是一眼反应显然后缀自动机,每次维护添加节点后的答案贡献即可,唯一不友好的一点是需要平衡树维护,这里因为复杂度不卡而 ...
- (线性dp 最大子段和 最大子矩阵和)POJ1050 To the Max
To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 54338 Accepted: 28752 Desc ...
- Python编程快速上手-让繁琐工作自动化-第二章习题及其答案
Python编程快速上手-让繁琐工作自动化-第二章习题及其答案 1.布尔数据类型的两个值是什么?如何拼写? 答:True和False,使用大写的T和大写的F,其他字母是小写. 2.3个布尔操作符是什么 ...
- Storm常用的类
BaseRichSpout (消息生产者)BaseBasicBolt (消息处理者)TopologyBuilder (拓扑的构建器)Values (将数据存放到values ,发送到下个组件)Tupl ...
- 极光推送java代码
package com.zheng.cms.web.jpush.util; import cn.jpush.api.JPushClient; import cn.jpush.api.common.AP ...
- 因子分析factor analysis_spss运用_python建模(推荐AAA)
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- Python中集合的操作
Python集合的基本详情 集合是无序的 集合是可变数据类型 集合属于不可哈希范围 集合自动去重 集合的操作 set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} ...
- [NIO-3]Socket通道
Socket通道 上文讲述了通道.文件通道,这篇文章来讲述一下Socket通道,Socket通道与文件通道有着不一样的特征,分三点说: 1.NIO的Socket通道类可以运行于非阻塞模式并且是可选择的 ...
- 使用CROS解决跨域问题
使用jq的话,设置ajax这两个属性即可. 第一个为使用crossDomain,第二个属性使其可以传输cookie $.ajaxSetup({ crossDomain: true, xhrFields ...