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 &lt; 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 - 学习总目录

Javascript - ExtJs - XTemplate组件的更多相关文章

  1. Javascript - ExtJs - GridPanel组件

    GridPanel组件(Ext.grid.GridPanel)logogram:Ext.grid.Panel | xtype:gridpanel 此类派生自Ext.Panel,创建表格需要两个必须的对 ...

  2. Javascript - ExtJs - ToolTip组件

    一个浮动的提示信息组件…… Ext,                               //可选 指定箭头的位置     anchor: 'buttom',                  ...

  3. Javascript - ExtJs - Window组件

    1.所有组件都可以放入window,此时子组件不需要配置renderTo,只需要将它们作为window的items子项即可. 2.items子项必须先创建,最后创建window,否则子项不会显示. 3 ...

  4. Javascript - ExtJs - TreePanel组件

    TreePanel组件(Ext.tree.TreePanel)logogram:Ext.tree.Panel | xtype:treepanel 树与节点 树面板组件的根是源头,从根上拓展出其它的子节 ...

  5. Javascript - ExtJs - GridPanel组件 - 编辑

    GridPanel组件 - 编辑 Ext.grid.plugin.Editing 如果要对表格使用列编辑器控件,则需要完成以下几步 1.将columns中需要编辑的列设为editor并提供编辑列时所要 ...

  6. Javascript - ExtJs - TabPanel组件

    示例 Ext.create('Ext.tab.Panel', {     width: "100%",     renderTo: "tabBox",      ...

  7. Javascript - ExtJs - Ext.form.Panel组件

    FormPanel组件(Ext.form.FormPanel) logogram:Ext.form.Panel | xtype:form Ext.form.Panel.配置 frame }//旗下所有 ...

  8. Twproject Gantt – 开源的 JavaScript 甘特图组件

    Twproject Gantt 是一款基于 jQuery 开发的甘特图组件,也可以创建其它图表,例如任务树(Task Trees).内置编辑.缩放和 CSS 皮肤等功能.更重要的是,它是免费开源的. ...

  9. 实用ExtJS教程100例-008:使用iframe填充ExtJS Window组件

    上面两节中我们分别演示了ExtJS Window的常用功能 和 如何最小化ExtJS Window组件,在这篇内容中我们来演示一下如何使用iframe填充window组件. 思路很简单,首先创建一个w ...

随机推荐

  1. shell之case

    在shell变成中,case语句是if语句的一种扩展,将if中的判断语句,展开,同一个变量,对应多个可能的值时,执行不同的操作.具体句型如下: case "变量" in value ...

  2. fork()、vfork()、clone()的区别

    因为生活的复杂,这是一个并行的世界,在同一时刻,会发生很多奇妙的事情,北方下雪,南方下雨,这里在吃饭,那边在睡觉,有人在学习,有人在运动,所以这时一个多彩多姿的世界,每天都发生着很多事情,所以要想很好 ...

  3. go操作redis和mysql示例

    一:redis示例 使用redis的包是: github.com/garyburd/redigo/redis 1:编写第一个示例: 链接,设置,获取 redis_basic.go package ma ...

  4. 解决docker多开mysql报错问题

    1.vim /etc/sysctl.conf fs.aio-max-nr=262144 重新加载 sysctl -p /etc/sysctl.conf

  5. day12-(jsp&el&jstl)

    回顾: jsp: cookie: 浏览器端会话技术 由服务器产生,生成key=value形式,通过响应头(set-cookie)返回给浏览器,保存在浏览器端 下次访问的时候根据一定的规则携带cooki ...

  6. 选择排序Java版

    package dataStructureAlgorithmReview.day01; import java.util.Arrays; /** * * @author shundong * */ p ...

  7. CodeForces121E 线段树上线段果

    http://codeforces.com/problemset/problem/121/E 题意: Petya 喜欢幸运数,幸运数只包含 4 和 7 这两个数字.例如 47,744,4 都是幸运数字 ...

  8. Elastic Stack之kibana使用

    Elastic Stack之kibana使用 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客数据流走向:FileBeat ===>Redis  ===>log ...

  9. 面向对象【day07】:析构函数(六)

    二.析构函数 一.概述 析构函数,第一次听说这个函数的名称,那这个函数到底是干嘛的呢?什么才是析构函数呐? 定义:在实例销毁的时候调用的函数 二.析构函数定义 2.1 定义 1 2 3 4 5 6 7 ...

  10. Kafka权威指南 读书笔记之(一)初识Kafka

    发布与订阅消息系统 数据(消息)的发送者(发布者)不会直接把消息发送给接收者,这是发布与订阅消息系统的一个特点.发布者以某种方式对消息进行分类,接收者(订阅者)订阅它们, 以便接收特定类型的消息.发布 ...