ext-2.0.2 xtemplate问题
来源:互联网 发布:云计算产业政策 编辑:程序博客网 时间:2024/06/11 15:43
1、指令只能包含在双引号中,换成单引号则无效
原因是ext中的正则表达式只匹配双引号,见ext-2.0.2 XTemplate.js
var nameRe = /^<tpl\b[^>]*?for="(.*?)"/;
var ifRe = /^<tpl\b[^>]*?if="(.*?)"/;
var execRe = /^<tpl\b[^>]*?exec="(.*?)"/;
例如:
<div id="container"></div>
var xt = new Ext.XTemplate("<tpl for='one'>{name}</tpl>");
xt.append('container', {one: {name: 'in one'}});
此时不会输出内容,必须把改为:
var xt = new Ext.XTemplate("<tpl for=\"two\">{name}</tpl>");
xt.append('container', {one: {name: 'in one'}});
或者
var xt = new Ext.XTemplate(‘<tpl for="two">{name}</tpl>’);
xt.append('container', {one: {name: 'in one'}});则会输出:in one
2、for指令中作用域只能一层一层,不能一下子跳过两层或以上
例如:
<div id="container"></div>
var xt = new Ext.XTemplate('<tpl for="two">{name}</tpl>');
xt.append('container', {one: {name: 'in one', two: {name: 'in two'}});
此时会报错,必须改为:
var xt = new Ext.XTemplate('<tpl for="one"><tpl for="two">{name}</tpl></tpl>');
xt.append('container', {one: {name: 'in one', two: {name: 'in two'}});
或
var xt = new Ext.XTemplate('<tpl for="one.two">{name}</tpl>');
xt.append('container', {one: {name: 'in one', two: {name: 'in two'}});
3、算术运算按照官方文档是支持:+、-、*、/的,当时试过之后发现-和/有问题;
而且算术只能是一个属性与一个数字表达式:例如可以是{age+1}或{age+1+1},不能是{age+age},{1+age}中的任一种。
猜想应该是正则表达式出了问题:见ext-2.0.2 XTemplate.js
/\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g
4、写XTemplate的参数是字符串中最好不要留空格,否则有些情况会出问题。例如:写'<tpl>{age+1}</tpl>',不要写成'<tpl>{age + 1}</tpl>'
5、for指令支持特殊符号:.或者..
支持(1)parent.obj1.obj2的写法(2)obj1.obj2(等价于values.obj1.obj2)的写法(3)支持this(指XTemplate实例);
支持js 代码:比如要实现obj1.obj2的效果
(1)可以使用function(){return obj1.obj2;}()替换obj1.obj2
var xt = new Ext.XTemplate('<tpl for="function(){return obj1.obj2;}()"></tpl>');
(2)给Xtemplate加上函数,然后在for指令中调用
var xt = new Ext.XTemplate('<tpl for="this.test(values,parent)"></tpl>');
xt.test = function(values, parent) {
// 其他操作
return values['obj1']['obj2'];
}
6、if指令支持values, parent, xindex, xcount参数,支持表达式和js 代码,函数的使用和for一样,返回值拿去判断,判断效果和普通的js if一样
7、exec指令,支持js 代码,与if指令相似,暂时还不清楚其作用
8、可以在一个tpl中同时使用for、if、exec指令,执行顺序为:
(1)执行if,返回值为true(或其在判断时等价值如非'',undefined,null等的值),执行(2)否则结束
(2)执行exec,返回值为false(或其在判断时等价值如'',undefined,null等的值),执行(3)否则结束
(3)执行for
如<tpl for="obj1.age" if="obj1.age>0"></tpl>
先执行if,如果obj1.age大于0为真,则执行for,否则结束
9、除了if、for、exec指令之外的地方,在{}中支持.或#或obj1.obj2(等价于values.obj1.obj2)或parent.obj1.obj2
10、除了if、for、exec指令之外的地方,在{[]}中支持js代码,返回的值会覆盖当前位置,其js代码与if指令相似
- ext-2.0.2 xtemplate问题
- Ext:XTemplate
- Ext.XTemplate
- Ext.XTemplate
- sencha touch Ext.XTemplate嵌套循环的问题
- Ext.复杂模板(XTemplate)
- Ext.XTemplate模板学习
- Ext中使用XTemplate
- Ext.XTemplate 介绍
- Ext.XTemplate 模板
- Ext.XTemplate 模板
- extjs Ext.XTemplate
- Ext.XTemplate 模板
- ext中的EXT.XTemplate()
- 利用Ext.XTemplate自定义组件
- extjs6.2中Ext.DomHelper类与Ext.XTemplate类初探
- Ext Js中Ext.XTemplate使用方法学习
- ExtJs2.0学习系列(11)--Ext.XTemplate
- 引用Html页面
- C语言 sizeof函数详解
- I2C死锁原因及解决方法
- WAMP 80端口被Microsoft-HTTPAPI/2.0占用的解决办法
- sql server简介和SQL语法
- ext-2.0.2 xtemplate问题
- Proxy(代理模式)
- 关于获得文件超过2G,超过4G文件大小的方法
- C#中StringBuilder类的使用
- python 执行javascript 模块 支持 python3
- VC使用mysql.h的接口头文件进行连接mysql数据库开发的完整解决方案
- PB数据窗口绝对技巧(转自jxeycn)
- qt文字光晕效果的一种实现
- 如何清除OUTLOOK中打开其他用户文件夹的记录?