开发者博客:www.developsearch.com
一、Ext
1.1 Ext.isEmpty(v, allowBlank) //是否为空[链接]
1.2 Ext.isArray(v) //是否为数组集合
1.3 Ext.isPrimitive(v) //是否是基本数据类型String/Number/Boolean
1.4 Ext.isFunction(v) //是否是函数
1.5 Ext.isNumber(v) //是否是数字
1.6 Ext.isString(v) //是否是字符串
1.7 Ext.isBoolean(v) //是否是bool值
1.8 Ext.isIE/isIE6/isIE7/isIE8... //判断浏览器
1.9 Ext.isWindows/isLinux/isMac/isAir //判断平台(操作系统)
1.10 Ext.isDefined //对象是否已经定义
1.11 Ext.id(el,prefix) //返回唯一的id值,el位元素Id,prefix为前缀
1.12 Ext.urlEncode(o, pre) //将JSON数据转换URL参数串,如{a:1,b:2} => a=1&b=2
1.13 Ext.urlDecode(string, overwrite) //将url参数列表转换成json格式数据,overwrite如果为true,则后面的同名参数值覆盖前面的同名参数值(默认为false即不覆盖而以数组形式返回)
1.15 Ext.each(array, fn, scope) //遍历数组,例:Ext.each([1,2,3],function(value,index,a){ //index:索引号,0开始 value:当前值 a:数组引用 });
1.16 Ext.encode(o) //将对象转换成json字符串,详细说明和用法:这里
1.17 Ext.decode(o) //将json字符串转换成对象
1.18 Ext.combine() //数组合并
1.19 Ext.num(value,defaultValue) //如果是数字,直接返回本身,否则返回默认值,注意"5"这里也会返回默认值的
1.20 Ext.copyTo(dest, source, names) //拷贝source中names属性列表至dest中
1.21 Ext.unique(arr) //剔除数组中重复的元素,让数组每个元素保持唯一
1.22 Ext.clean(arr) //复制数组?!
1.23 Ext.flatten(arr) //将多维数组转换成一维数组
1.24 Ext.min(arr, comp) //查找数组中最小的元素
1.25 Ext.max(arr, comp) //查找数组中最大的元素
1.26 Ext.mean(arr) //计算数组元素平均值(总和除以个数)
1.27 Ext.partition(arr, truth) //根据arr元素的bool值拆分成新的二维数组并返回
例1:Ext.partition([true, false, true, true, false]); // [[true, true, true], [false, false]]
例2:Ext.partition(arr,function(val){ return val == "class1" });
1.28 Ext.invoke(arr, methodName,) //执行arr数组中对象的methodName方法,args为方法的参数,返回执行结果数组
1.29 Ext.pluck(arr, prop) //返回数组中属性名(property name)等于prop的值的新数组 Ext.pluck(arr, "className"); => [arr1.className,arr2.className]
1.30 Ext.zip({Arrays|NodeLists},{Function}) //压缩多个数组为一个数组, Ext.zip([1,2,3], [4,5,6]); // [[1,4],[2,5],[3,6]],支持Function自定义合并
1.31 Ext.type(object) //返回对象的类型:string,number,boolean,function,object,array,regexp,element,nodelist,textnode,whitespace
二、Ext.util.Format
2.1 Ext.util.Format.capitalize(value); //首字母大写
2.2 Ext.util.Format.ellipsis(value, len, word); //从字符串开始处截取len长度显示,超过部分用...表示;word为布尔值,为true时在前面截取的基础上再从' '、'.'、'!'、'?'关键字处截取前面(len),ellipsis("abcde.fghijkl",10,true)返回abcde
2.3 Ext.util.Format.htmlEncode(value); //HTML编码,将& < > “替换为&<>"
2.4 Ext.util.Format.htmlDecode(value); //HTML解码,与上面相反
2.5 Ext.util.Format.trim(value); //截取字符串左右的空格
2.6 Ext.util.Format.substr(value, start, length); //从value指定的start位置开始截取length长度的子串返回
2.7 Ext.util.Format.lowercase(value); //转换大写
2.8 Ext.util.Format.uppercase(value); //转换小写
2.9 Ext.util.Format.stripTags(v); //去除HTML标签:/<\/?[^>]+>/gi
2.10 Ext.util.Format.usMoney(v); //转换到'$'符号的货币形式
2.11 Ext.util.Format.date(v, format); //格式化日期输出,format默认格式"m/d/Y"
2.12 Ext.util.Format.round(value, precision); //四舍五入,precision指精确位数
2.13 Ext.util.Format.number(v, format); //格式化数字显示
2.14 Ext.util.Format.nl2br(value); //将字符串中的'\n'替换成'<br />'
2.15 Ext.util.Format.fileSize(value); //将字节数转成更大的单位KB和MB显示,fileSize(1024) = 1KB
2.16 Ext.util.Format.defaultValue(value, defaultValue); //如果value未定义或为空字符串则返回defaultValue
2.17 Ext.util.Format.stripScripts(v); //去除脚本标签
2.18 Ext.util.Format.undef(value); //如果value未定义,返回空字符串,反之返回value本身
三、扩展JS原有对象
3.1 String
3.1.1 .format(format) //和C#里面是一样的用法
3.1.2 .toggle(value, other) //交换值,如果当前值等于value,则被赋值other
3.2 Array
3.2.1 .indexOf(o) //返回元素o在数组ArrayObject中的位置,找不到返回-1
3.2.2 .remove(o) //从数组ArrayObject删除元素o
3.3 Function
3.3.1 .createInterceptor(fcn, scope) //创建阻断方法,如果fcn返回false,原方法将不会被执行,参见这里
3.3.2 .createCallback() //创建回调,以无参的函数作为参数,但是现有的方 法已经具有了参数,如果直接写上可以用这个来创建一个回调,类似于function(){ //实际的带参调用 } ,见这里1、这里2
3.3.3 .createDelegate(obj, args, appendArgs) //创建委托,与上面相比,自己可以访问obj中的属性和方法,见这里
3.3.4 .defer(millis, obj, args, appendArgs) //定时执行,隔millis毫秒后执行原方法,参见这里
3.3.5 .createSequence(fcn, scope) //Ext-more.js中,创建组合方法,执行原方法+fcn,参见这里
四、 其他
4.1 表单
4.1.1 一次取得表单所有的表单元素key/value集合
form1.form.getValues() //form1为Ext.FormPanel,例如:
//注意
var conn = new Ext.data.Connection();
conn.request({
url: 'submit.aspx?method=Submit4',
//此处与params对应,如果为POST,则服务器端从Request.Form中可以取得到数据,反之从QueryString中取数据
method: 'POST',//GET
params:form1.form.getValues(),
success: function(response, opts) {
MsgInfo(response.responseText);
}
});
form1.form.setValues(values) //form1.form.setValues({id:1,name:'aabbcc'}) 赋值
4.1.2 表单元素取值赋值一次取得
4.1.2.1 form1.form.findField('TextBox').getValue()
4.1.2.2 form1.form.getValues().TextBox
4.1.2.3 form1.form.getFieldValues().TextBox
4.2 切换皮肤
Ext.util.CSS.swapStyleSheet("theme", "resources/css/ext/xtheme-orange.css"); //注意路径
1、指定验证的正则表达式,regexText指定验证不通过时的提示信息:
items:{
id:”ipAddress”,
name:”ipAddress”,
xtype:’textfield’,
fieldLabel:’IP地址’,
allowBlank:true,//不允许为空
regex:/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/,
regexText:’必须是合适的IP地址’,
anchor:’90%’
}
当使用的为非ip地址时,在错误提示信息中会提示regexText的值:’必须是合适的IP地址’。
2、使用Extjs内置属性进行验证
Extjs内置allowBlank,maxlength,minlength等属性,可以对输入内容进行限制,如果不符合,会生成错误提示。
如上一段代码中的allowBlank设置为false,则当输入内容为空时会生成错误提示。
var form1 = new Ext.form.FormPanel({
width:350,
renderTo:”form1″,
title:”FormPanel”,
defaults:{xtype:”textfield”,inputType:”password”},
items:[
{
fieldLabel:"不能为空",
allowBlank:false, //不允许为空
blankText:"不能为空", //错误提示信息,默认为This field is required!
id:"blanktest",
}]
});
3、使用Vtype进行验证
Extjs内置了四种验证方式,如下:
//form验证中vtype的默认支持类型
1.alpha //只能输入字母,无法输入其他(如数字,特殊符号等)
2.alphanum //只能输入字母和数字,无法输入其他
3.email //email验证,要求的格式是”langsin@gmail.com”
4.url //url格式验证,要求的格式是http://www.langsin.com
items:{
id:” email”,
name:”ipAddress”,
xtype:’textfield’,
fieldLabel:’email地址’,
allowBlank:true,//不允许为空
vtype:”email”,
vtypeText:'不是有效的邮箱地址′,
anchor:’90%’
}
当输入的内容不是正确的email地址时,会生成错误提示信息
4、自定义Vtype扩展验证
①简单定义函数
自定义Vtype时,实际使用js语言,因此此部分是最大最广泛的,可以使用语言的任何特性。
首先要扩展Ext.form.VTypes,然后在使用时调用扩展方法。如下:
Ext.apply(Ext.form.VTypes,
{
integer : function(val, field)
{
var exp = /^([1-9]\d{0,7}|0)$/;
return val.match(exp);
},
integerText : ‘您输入的必须为数字!’,
其中val为文体框中的值,field 为文本框所在的组件;
integer为定义的验证方法,integerText为默认的提示信息,在调用时可以通过指定vtypeText来覆盖此定义。
②定义验证函数及提示信息
Ext.apply(Ext.form.VTypes,
{
integer : function(val, field)
{
var exp = /^([1-9]\d{0,7}|0)$/;
field.vtypeText = ‘您输入的必须为数字!’;//此处输入其他提示信息
return val.match(exp);
},
此处指定的vtypeText值是动态运行是设置的,会覆盖调用时指定的vtypeText值
③定义传值对象及组合验证
在ext的vtype中指定的方法是可以传入自定义参数。如下定义的验证方法:
Ext.apply(Ext.form.VTypes,
{
commonValidate : function(val,field)
{
var attr = field.vlist.split(‘$’);//此处field.vlist即为定义的vlist
for(var i=0;i<attr.length;i++){
var functionName = attr[i];
if(!eval(“Ext.form.VTypes.”+functionName+”(val,field)”))
{
return eval(“Ext.form.VTypes.”+functionName+”(val,field)”);
}
}
}
return true;
}
而在调用时如下:
items:{
xtype:’textfield’,
fieldLabel:’单位名称’,
lengthRange:{min:’0′, max:’50′},// lengthRange中方法参数
vtype:’commonValidate’,//调用commonValidtate方法
vlist:”lengthRange$specialChar”,//传入方法参数
anchor:’90%’
}
如上调用,vlist为自定义的属性值(js语法决定可以直接在类中增加属性),在vtype方法中通过field.vlist来获取传入值。
而lengthRange方法又通过获取lengthRange中的值来获取参数
lengthRange : function(val, field)
{
var minLength = 0;
var maxLength = 100;
if (field.lengthRange)
{
minLength = field.lengthRange.min;
maxLength = field.lengthRange.max;
}
if (val.length < minLength || val.length > maxLength)
{
//定义此输入框的提示信息
if(minLength == 0)
{
field.vtypeText= “您输入的长度必须小于” + maxLength + “!”;
}
else
{
field.vtypeText= “您输入的长度必须在” + minLength + “到” + maxLength + “之间!”;
}
return false;
}
return true;
},
参考
{
xtype : “textfield”,
name : ‘UserName’,
id: ‘UserName’,
allowBlank : false,
blankText : ‘注册用户名不能为空’,
regex : /^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){5,11}$/,
regexText : ‘用户名不合法(必须以字母开头,长度6-12位)!’,//验证错误之后的提示信息
fieldLabel : ‘登录名’,
emptyText : ‘填写用户名’,
invalidText : ‘用户名已经被注册!’,
width : 250,
validationEvent : ‘blur’,
validator : function(val) {
Ext.Ajax.request({
url : ‘check.do?name=’+ val,
method : ‘post’,
success : function(response,options)
{
var res = Ext.util.JSON.decode(response.responseText);
return (res.success);
}
})
}
}
ExtJs4 读取XML文件时字段和根名都要区分大小写
Ext.define('MyData',{
extend: 'Ext.data.Model',
fields: [{ name:'Job_id', mapping: 'Job_id'}
,'Job_desc'
,'Min_lvl'
,'Max_lvl'
]
});
var store = Ext.create('Ext.data.Store', {
storeId: 'DataStore',
autoLoad: true,
model: 'MyData',
proxy: {
type: 'ajax',
url: 'MyXmlData.xml', //'GetExtjsData.aspx?parm=List',
reader: {
type: 'xml',
root: 'dataset',
record: 'record'
}
}
});
xml文件格式:多记录时要加根目录‘dataset’
<?xml version='1.0' encoding='utf-8'?>
<dataset>
<record>
<Job_id>1</Job_id>
<Job_desc>name1</Job_desc>
<Min_lvl>23</Min_lvl>
<Max_lvl>33</Max_lvl>
</record>
<record>
<Job_id>2</Job_id>
<Job_desc>name1</Job_desc>
<Min_lvl>23</Min_lvl>
<Max_lvl>33</Max_lvl>
</record>
</dataset>
1、Grid数据刷新
a、直接刷新,获取grid的store后,调用store的reload()方法;
b、修改Grid数据来源,修改列表(grid)里store的加载url :
grid.getStore().proxy.conn.url = url;
grid.getStore().reload();
2、以相对页面或框架设置Grid控件宽度或高度
假如有GridPanel控件句柄为grid,则设置相对高度或宽度为:
grid.setHeight(document.body.clientHeight - 10);
grid.setWidth(document.body.clientWidth- 10);
或
grid.setHeight(document.body.clientHeight * 0.8);
grid.setHeight(document.body.clientWidth * 0.8);
这个也适合其他的控件,如panel、tabPanel等
3、Ext.data.Store里baseParams与Store.load({params:{}})的区别
baseParams里的参数是一直存在的,而params里的参数,只有load时才会传递过去,当调用reload时参数不会再传过去。也即是“一次性”的。
相关推荐
单项海洋环境影响评价等级表.docx
【作品名称】:基于AT89C51 单片机为核心器件,程序设计采用C 语言,Keil 软件编译程序,配以相关外围接口电路,实现了方波、锯齿波、正弦波、三角波、梯形波五种特定波形的产生【论文+源码】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:本设计中的波形发生器系统要求基于51单片机,因此选用以AT89C51单片机作为整个系统的控制核心,应用其强大的接口功能,构成整个波形发生器的硬件系统。使用C 语言对单片机编程可产生相应的正弦波,方波,三角波,锯齿波梯形波波形信号。在程序运行时,当接收到按键信息后,需要输出某种波形时,调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出即可得到要求的波形。 当需要改变频率时只需要改变单片机的波形发生程序中的递增或者递减变量即可。 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。
数学建模培训资料 数学建模实战题目真题答案解析解题过程&论文报告 完全多元图的最大匹配问题研究 共9页.pdf
本项目是基于Python Web的社区爱心养老管理系统,旨在为社区养老提供一个全面、高效的管理平台。系统集成了用户管理、老人信息管理、健康管理、活动管理、服务管理等多项功能,通过简洁明了的界面,让管理人员能够轻松地进行各项操作,从而更好地服务于社区老人。 在架构上,系统采用B/S模式,前端使用HTML、CSS、JavaScript等技术,搭配Vue.js框架,实现了用户友好的交互界面;后端则基于Python的Django框架,提供了稳定且高效的服务端逻辑处理能力。数据库选用MySQL,确保了数据的存储安全和高效访问。 开发此项目的目的,不仅是为了满足计算机相关专业学生的毕设需求,提供一个实战练习的平台,更是希望通过实际项目的开发,培养学生的专业技能和实践能力,同时,也希望能为社区养老服务贡献一份力量,通过科技手段,让老年人的生活更加美好、便捷。
教学版单体spring-petlinic,课程《Kubernetes微服务实践》
内容概要:本文介绍了16世纪法国外交家Blaise de Vigenère提出的一种多表密码算法,详细解释了Vigenère密码的加密解密机制及其历史应用背景。特别提到了当明文M的长度超过密钥K的情况下,密钥会被重复使用的技巧。 适合人群:对古典密码学感兴趣的初学者,以及希望深入理解密码编码基本原理的学习者。 使用场景及目标:了解Vigenère密码的工作原理,掌握简单的加解密技术,增强信息安全意识。能够自行实施加解密操作,理解经典密码学的基本概念和技术。 其他说明:本文不仅提供了理论讲解,还给出了具体的例子帮助理解和实操练习。
STM32-EMBPI : Embedded Pi, triple-play platform for STM32, Raspberry Pi and Arduino
内容概要:本文主要探讨了电子电气架构中的网络管理策略,尤其是针对汽车中多个ECU(Electronic Control Unit)的协同管理和低功耗设计。通过引入网络管理状态机的概念,详细介绍了各状态(如常规运行状态、重复报文状态、准备睡眠模式、预睡眠模式、深度睡眠模式等)的具体运作机制及其在汽车电子系统中的重要性。文中还讨论了网络管理报文的设计与传输规则,特别是控制位向量CBV的定义,强调了网络管理在节能降耗方面的关键作用。 适用人群:具备一定汽车电子工程背景的专业人士或研究者,尤其对网络管理及低功耗设计感兴趣的工程师。 使用场景及目标:适用于汽车设计与制造企业的研发部门,帮助其优化电子控制系统,提升产品能效比,降低维护成本,提高用户体验。通过对网络管理策略的理解与应用,达到降低车载电子系统功耗的目的,进而延长电动车的续航能力和降低传统燃油车的油耗。 其他说明:文章不仅提供了理论上的阐述,还包括了具体的操作指南和技术细节,有助于从业者深入理解和实施网络管理方案。同时提醒在现代信息化社会中保持屏蔽力的重要性,鼓励读者专注于自己的发展目标,避免无效的精力分散。
英飞凌TC3XX_MCAL培训PPT
缴费综合服务系-JAVA-基于springBoot高校网上缴费综合服务系统设计与实现
Python与机器学习方向,《TensorFlow基础教程》课程仓库
【资源说明】 本科毕业设计 基于Python+Django教学资源管理系统网站详细文档+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
内容概要:文章详细讨论了汽车行业正经历的重大变革,尤其是电动汽车(EV)和软件定义汽车(SDV)对行业的深远影响。随着技术的进步,汽车的差异化优势不再仅限于机械硬件,而是越来越多地取决于软件和服务。这一转型要求汽车制造商重新评估现有的解决方案堆栈,加大在电气化和连接性等领域的投资,以实现车型的电气化并支持可扩展性和全生命周期更新。同时,汽车的开发重点已经从机电领域转向了芯片和软件领域,强调基于云计算的协作开发方法。 适合人群:汽车行业专业人士、汽车电子工程师、技术研发人员及政策制定者。 使用场景及目标:帮助读者理解和把握汽车行业数字化转型的趋势,指导他们在电动汽车和软件定义汽车领域做出正确的技术投资和战略调整。 其他说明:本文不仅讨论了技术变革,还深入剖析了由此带来的商业和运营模式的变化,为汽车行业的未来发展方向提供了洞见。
微信课堂助手 微信小程序+PHP毕业设计 源码+数据库+论文+启动教程
新设博士后科研工作站备案申请表.xlsx
的玩具 Python 实现手套蟒蛇GloVe的玩具 Python 实现。Glove 产生单词的密集向量嵌入,其中一起出现的单词在生成的向量空间中靠得很近。虽然这会产生与word2vec (在gensim中有一个很棒的 python 实现)类似的嵌入,但方法不同GloVe 通过对语料库词共现矩阵的对数进行分解来产生嵌入。代码采用异步随机梯度下降,用Cython实现,很可能存在大量bug。安装使用 pip 从 pypi 安装pip install glove_python。OSX 用户请注意由于使用 OpenMP,glove-python 无法在 Clang 下编译。要安装它,您需要一个较新的版本gcc(例如来自 Homebrew)。应该由 接收setup.py如果没有,请打开一个问题。使用 OSX 中包含的默认 Python 发行版进行构建也不受支持请尝试 Homebrew 或 Anaconda 中的版本。用法生成嵌入分为两个步骤从语料库中创建共现矩阵,然后使用它生成嵌入。该类Corpus有助于从可交互的标记构建语料库该类Glove训练嵌入(使
消息中间件rabbitmq学习的一些代码、笔记
环境说明:开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat 开发软件:eclipse/myeclipse/idea Maven包:Maven 浏览器:谷歌浏览器。 项目均可完美运行
空气质量现状评价表.docx
建设工程施工现场消防安全检查表.docx