EXT核心API详解(七)-Ext.KeyNav/KeyMap/JSON/Format/DelayedTask/TaskRunner/TextMetrics/XTemplate

简介: Ext.KeyNavExt的keyNav类能为Ext.Element元素提供简单的按键处理方法例:var el=Ext.get("textarea");new Ext.KeyNav(el, {    "left" : function(e){        alert("left key down"...
Ext.KeyNav
Ext的keyNav类能为Ext.Element元素提供简单的按键处理方法
例:
var el=Ext.get("textarea");
new Ext.KeyNav(el, {
    "left" : function(e){
        alert("left key down");
        },
    scope : el
    }
);
它的行为与KeyMap类似,但功能比KeyMap要弱小的多,只能处理以下已定义键
enter/left/right/up/down/tab/esc/pageUp/pageDown/del/home/end
同情一下KeyNav

方法只有三个,不用多解释
KeyNav( Mixed el, Object config )
disable() : void
enable() : void

Ext.KeyMap类
则强悍的多,其中最重要的当然是对按键的定义更灵活
例:上例用KeyMap来写可能是
var el=Ext.get("textarea");
new Ext.KeyMap(el, {
        key:Ext.EventObject.LEFT,
        fn: function(e){
            alert("left key down");
        },
        scope : el
    }
);

方法
KeyMap( Mixed el, Object config, [String eventName] )
构造,与KeyNav也相似,但更灵活
它是{
key:        String/Array,     //可以是数字,字符,也可以是Ext.EventObject.LEFT这样的助记符,还能是他们组成的数组
shift:       Boolean,          //ctrl键按下?
ctrl:        Boolean,
alt :        Boolean,
fn  :        Function,         //回叫方法
scope:       Object          //范围
}这样的对象或它们组成的数组
比如{key: 10},{key: [10,13]},{key:'\t'},{key:'abcd'},{key:Ext.EventObject.LEFT}都是合法的定义

addBinding( Object/Array config ) : void
增加新的绑定动作 config参见构造

disable() : void
enable() : void
isEnabled() : Boolean
允许,静止和状态查询

on( Number/Array/Object key, Function fn, [Object scope] ) : void
只添加一个处理时addBinding的快捷方式,但个人感觉并没有简单到哪儿去。


Ext.util.JSON
轮到大名鼎鼎的JSON了,可惜Ext提供的JSON对象功能好弱小,只有encode主decode两个方法
而且只能编码String/Array/Date,至少也要搞个 xml2json/json2xml方法呀

Ext.util.Format
主要提供了一些格式化方法

capitalize( String value ) : String
首字母大写

date( Mixed value, [String format] ) : String
格式化日期输出,还是Date.format方法好用

dateRenderer( String format ) : Function
返回一个利用指定format格式化日期的方法

defaultValue( Mixed value, String defaultValue ) : String
如果value未定义或为空字符串则返回defaultValue

ellipsis( String value, Number length ) : String
如果value的长度超过length的,取前length-3个并用...替代,对中国人来说还是垃圾功能,用的字符串长度不是字节长度

fileSize( Number/String size ) : String
简单的格式化文件长度为 xxxbytes xxxKB xxxMB,没有GB哟

htmlEncode( String value ) : String
htmlDecode( String value ) : String
HTML编码解码,将& <  >  “替换为&amp;&lt;&gt;&quot;

lowercase( String value ) : String
将value转换为全小写

stripScripts( Mixed value ) : String
去除脚本标签

stripTags( Mixed value ) : String
去除HTML标签

substr( String value, Number start, Number length ) : String
取子字符串

trim( String value ) : String
去除开头和结尾的空格

undef( Mixed value ) : Mixed
如果value未定义,返回空字符串,反之返回value本身

uppercase( String value ) : String
转为全大写

usMoney( Number/String value ) : String
转为美元表示

Ext.util.DelayedTask
提供一个setTimeout的简单替代方法

公开的方法也只有三个
DelayedTask( [Function fn], [Object scope], [Array args] )
delay( Number delay, [Function newFn], [Object newScope], [Array newArgs] ) :
cancel() : void
简单的示例用法如果
var task=new Ext.util.DelayedTask(Ext.emptuFn);
task.delay(1000);
task.cancel();

Ext.util.TaskRunner
增强版的DelayedTask,能提供多线程的定时服务,
例:
var task = {
    run: function(){
        Ext.fly('clock').update(new Date().format('g:i:s A'));
    },
    interval: 1000
}
var runner = new Ext.util.TaskRunner();
runner.start(task);

四个方法都很简单
TaskRunner( [Number interval] )
start( [Object task] ) : Object
stop( Object task ) : Object
stopAll() : void


Ext.util.TextMetrics
这个类主要是为了准备的得到块状化文本正确的高度和宽度
例:
var metrics=Ext.util.TextMetrics.createInstance('div');
metrics.setFixedWidth(100);
var size=metrics.getSize("中华人民共和国中华人民共和国中华人民共和国中华人民共和国");
Ext.MessageBox.alert("getsize",String.format("width:{0}px\theight:{1}px",size.width,size.height))

方法
bind( String/HTMLElement el ) : void
绑定到el

createInstance( String/HTMLElement el, [Number fixedWidth] ) : Ext.util.TextMetrics.Instance
为el创建TextMetrics实例

getHeight( String text ) : Number
getSize( String text ) : Object
getWidth( String text ) : Number
得到尺寸

measure( String/HTMLElement el, String text, [Number fixedWidth] ) : Object
测算文本text在el中将要占用的尺寸

setFixedWidth( Number width ) : void
设置指定的宽度

Ext.XTemplate
增强型模板,支持更多功能了,虽然方法不多,但用起来来还真的很麻烦,但并不建议大家学习这样的自定义语法,不如用xslt
另外这个Xtemplate虽然命名空间在Ext之下,但源文件却是放在util目录中的
XTemplate( String/Array html )
XTemplate.from( String/HTMLElement el ) : Ext.XTemplate
apply() : void
applyTemplate( Object values ) : String
compile() : Function
这些方法Ext.Template中都有说明,
目录
相关文章
|
7月前
|
XML JSON 缓存
Json实现根据商品ID请求易贝商品详情数据方法,ebay商品详情API接口,易贝API接口申请指南
Json实现根据商品ID请求易贝商品详情数据方法,ebay商品详情API接口,易贝API接口申请指南
243 0
|
7月前
|
XML JSON 缓存
Json实现根据商品ID请求唯品会商品详情数据方法,唯品会商品详情API接口,唯品会API接口申请指南
Json实现根据商品ID请求唯品会商品详情数据方法,唯品会商品详情API接口,唯品会API接口申请指南
245 0
|
7月前
|
XML JSON 缓存
Json实现根据商品ID请求淘宝商品详情数据方法,淘宝商品详情API接口,淘宝API接口申请指南
Json实现根据商品ID请求淘宝商品详情数据方法,淘宝商品详情API接口,淘宝API接口申请指南
303 0
|
2月前
|
SQL 消息中间件 Java
Flink报错问题之使用debezium-json format报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
2月前
|
SQL Java 关系型数据库
flink问题之使用debezium-json format报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
49 0
|
7月前
|
XML JSON 缓存
Json实现根据商品ID请求1688商品详情数据方法,1688商品详情API接口,1688API接口申请指南
Json实现根据商品ID请求1688商品详情数据方法,1688商品详情API接口,1688API接口申请指南
275 0
|
7月前
|
XML JSON 缓存
Json实现根据商品ID请求亚马逊商品详情数据方法,亚马逊商品详情API接口,亚马逊API接口申请指南
Json实现根据商品ID请求亚马逊商品详情数据方法,亚马逊商品详情API接口,亚马逊API接口申请指南
237 0
|
3月前
|
JSON 关系型数据库 MySQL
这个问题是由于Flink的Table API在处理MySQL数据时,将MULTISET类型的字段转换为了JSON格式
【1月更文挑战第17天】【1月更文挑战第84篇】这个问题是由于Flink的Table API在处理MySQL数据时,将MULTISET类型的字段转换为了JSON格式
34 1
|
3月前
|
JSON Java API
Spring Boot 无侵入式 实现API接口统一JSON格式返回
Spring Boot 无侵入式 实现API接口统一JSON格式返回
|
4月前
|
小程序 API 定位技术
【uni-app报错】选择地址:fail the api need to be declared in the requiredPrivateInfos field in app/ext.json
【uni-app报错】选择地址:fail the api need to be declared in the requiredPrivateInfos field in app/ext.json
109 0