很多写extjs的朋友说,Extjs的源码之间的关系太紧了,所以不能像其他很多框架那样,能分模块按需加载,但Ext很难做到,其实这确实是存在这样的问题,但如果作为一个框架,代码之间没有依赖性,那这代码必然不是最精简的,但其实Ext的很多代码还是依赖性很小的,自己稍微加工一下就可以做成自己需要的工具函数用!看代码
//JSON对象和String对象转化
Ext.util.JSON = {
//格式化数字<10的前面补0
pad : function(n) {
return n < 10 ? "0" + n : n;
},
//把字符串转化为JSON格式
decode:function(json){
return eval("(" + json + ')');
},
//把JSON对象转化为字符串
encode:function(o){
if(typeof o == "undefined" || o === null){
return "null";
}else if(Ext.isArray(o)){//数组
var a = ["["], b, i, l = o.length, v;
for (i = 0; i < l; i++) {
v = o[i];
switch (typeof v) {
case "undefined":
case "function":
case "unknown":
break;
default:
if (b) {
a.push(',');
}
a.push(v === null ? "null" : Ext.util.JSON.encode(v));
b = true;
}
}
a.push("]");
return a.join("");
}else if(Ext.isDate(o)){//日期对象
return '"' + o.getFullYear() + "-" +
Ext.util.JSON.pad(o.getMonth() + 1) + "-" +
Ext.util.JSON.pad(o.getDate()) + " " +
Ext.util.JSON.pad(o.getHours()) + ":" +
Ext.util.JSON.pad(o.getMinutes()) + ":" +
Ext.util.JSON.pad(o.getSeconds()) + '"';
}else if(typeof o == "string"){//字符串,转义回车换行,双引号,反斜杠...等
var m = {
"\b": '\\b',
"\t": '\\t',
"\n": '\\n',
"\f": '\\f',
"\r": '\\r',
'"' : '\\"',
"\\": '\\\\'
};
if (/["\\\x00-\x1f]/.test(o)) {
return '"' + o.replace(/([\x00-\x1f\\"])/g, function(a, b) {
var c = m[b];
if(c){
return c;
}
c = b.charCodeAt();
return "\\u00" +
Math.floor(c / 16).toString(16) +
(c % 16).toString(16);
}) + '"';
}
return '"' + o + '"';
}else if(typeof o == "number"){
return isFinite(o) ? String(o) : "null";
}else if(typeof o == "boolean"){
return String(o);
}else {//json格式的对象
var a = ["{"], b, i, v;
for (i in o) {
v = o[i];
switch (typeof v) {
case "undefined":
case "function":
case "unknown":
break;
default:
if(b){
a.push(',');
}
a.push(Ext.util.JSON.encode(i), ":", v === null ? "null" : Ext.util.JSON.encode(v));
b = true;
}
}
a.push("}");
return a.join("");
}
}
};
Ext.encode = Ext.util.encode;
Ext.decode = Ext.util.decode;
分享到:
相关推荐
extjs-theme-bootstrap-master.zip
extjs多选下拉框,Ext.ux.form.LovCombo,extjs 以修复多选下拉框火狐下取不到值的问题,火狐下div不显示背景色的问题
从spket IDE 官网下载。 文件名: ext-4.2.1.883.jsb2 对应版本ext-4.2.*版本。spket自动提示ExtJs4,需要ext4.2.1.jsp2文件。
Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...
ext-4.2.1-gpl.7z
官方最新版本Extjs6.2版本sdk,创建新项目的时候需要用, 全面的核心框架,具有最新的Javascript标准支持 新的漂亮组件和主题,以创建漂亮的企业应用程序 现代工具链,用于构建优化,高性能,通用的应用程序 用于可视...
ExtJs学习资料28-Ext.data.JsonStore数据存储器
EXTJS-4.2.1.883
ext-7.0.0-gpl.zip
从ext官方论坛上下的。 文件名: ext-4.2.1.883.jsb2 对应版本ext-4.2.1.883
Sencha Ext JS is the most comprehensive JavaScript framework for building data-intensive, cross-platform web and mobile applications for any modern device. Ext JS includes 140+ pre-integrated and ...
ExtJS-4.2.2-gpl.rar完整版,包含源码,示例,api,文档
js框架 extjs-4.2.1.883.7z
使用ExtJs获取后台json格式的数据必须的七个jar包,commons-beanuti-1s-1.7.0.jar,commons-collections-3.1.jar,commons-lang-2.5.jar,commons-logging-1.0.4.jar,ezmorph-1.0.4.jar,json-lib-2.1.jar,...
extjs-620-docs官方文档extjs-620-docs官方文档extjs-620-docs官方文档
ExtJs选中var editor = new Ext.ux.grid.RowEditor详解.txt
4. ExtJs2.0学习系列(4)--Ext.FormPanel之第一式 5. ExtJs2.0学习系列(5)--Ext.FormPanel之第二式 6. ExtJs2.0学习系列(6)--Ext.FormPanel之第三式(ComboBox篇) 7. ExtJs2.0学习系列(7)--Ext.FormPanel之第四式(其他...
extjs-mvc-architecture.pdf
Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...
无论是界面之美,还是功能之强,ext的表格控件都高居榜首。 单选行,多选行,高亮显示选中的行,推拽改变列宽度,按列排序,这些基本功能ExtJS轻量级实现。 自动生成行号,支持checkbox全选,动态选择显示哪些列,...