OtherUtils 其他工具函数
简介
utils工具函数中许多无法归类,将全部在本页列举。
axPreventDefault
阻止默认事件,比如点击a标签应该跳转,使用该函数可禁止默认跳转。
完整写法:axPreventDefault(event),参数说明如下:
- event:必填项,通常为window对象。
举例:无。
axCreateId
对象不存在报错并直接返回,不再继续执行。
完整写法:axCreateId(prefix, type, elem),可简写为:axCreateId(prefix),参数说明如下:
- prefix:必填项,文本前缀。
- type:选填项,可以填数字,也可以填'id',如果不填该函数将以时间戳创建字符串;如果elem存在并且该参数填'id',那么将返回该元素id值。
- elem:可以填"#id"、".className"、"div"等原生选择器以及Dom对象。
举例:axCreateId('ax', 10)。可能返回:'ax-9kjherwd45'(10位随机字符)
axTplEngine
该函数是本框架所使用的模板引擎。
完整写法:axTplEngine(html, data),参数说明如下:
- html:必填项,带变量的字符串,变量或js代码用'<#'和'#>'包裹,变量使用this.*方式引用。
- data:选必填项,支持html渲染内容的参数对象。
举例:axTplEngine(`<div><#' this.country '#></div>`, {country:' china'}) ,该例子将返回字符串:<div>china</div>。
axArrange
该函数可以让数组进行完全排列组合,返回新数组。
完整写法:axArrange(origin, n),参数说明如下:
- origin:必填项,原始字符串
- n:必填项,数组维度length。
举例:axArrange('man', 2) ,该例子将返回[['m','a'],['m','n'],['a','n']]。
axResult
该函数可以创建矢量动画结果效果。
完整写法:axResult(elem, state),参数说明如下:
- elem:必填项,现有子节点对象,可以填"#id"、".className"、"div"等原生选择器以及Dom对象。
- state:必填项,可以填success、error、question和info。
举例:axResult('#demo', 'success') ,该例子将在#demo元素创建一个成功结果动画。
axCreateContent
该函数用来创建窗口主体内容,专属用于dialog、drawer和popup插件。
完整写法:axCreateContent(options, instance, type,callback),参数说明如下:
- options:必填项,dialog、drawer或popup插件的options。
- instance:必填项,dialog、drawer或popup插件的实例本身,通常为this。
- type:选填项,异步提交的方式,默认post,可填get。
- callback:选填项,回调函数。
axFooterBtns
该函数用来创建窗口底部内容,专属用于dialog、drawer和popup插件。
完整写法:axFooterBtns(options, instance),参数说明如下:
- options:必填项,dialog、drawer或popup插件的options。
- instance:必填项,dialog、drawer或popup插件的实例本身,通常为this。
axLocalTime
该函数可以将任意时间转成本地时间戳。
完整写法:axLocalTime(date, utc),参数说明如下:
- date:必填项,日期,格式可以是"YYYY-MM-DD" 或 "YYYY/MM/DD"。
- utc:选填项,所填时间是否是utf时间,可填true或false。true和false的时间转换结果会相差8个小时
举例:axLocalTime('2022-2-12'),该例子将返回时间戳:1644595200000。
axValidRepeat
该函数用于点击提交表单校验。
完整写法:axValidRepeat(e, outer, callback, optons={data:axValids,interval : 100}),参数说明如下:
- e:必填项,通常是window。
- outer:必填项,表单项的父层,可以是form节点,也可以是某div节点,但是必须与表单项的父节点一致,所以建议是form节点。
- callback:选填项,校验成功后执行回调函数。
- options:选填项,参数,有两个参数如下:
- data:必填项,数组数据,格式为:[{parent:'',children:{name:'',verified:'',text:''}},{}];默认为axValids即当页的所有校验数据。
- interval:必填项,表单项校验的间隔时间,纯是为了显示逐个校验效果,默认100毫秒。
举例:略。
axCookie
该函数封装了原生cookie方法,支持cookie的写入、读取和删除。
写入cookie,完整写法:axCookie.set(name, value, {type:'day',expires:365})
读取cookie,完整写法:axCookie.get(name)
删除cookie,完整写法:axCookie.remove(name)
set的options参数说明如下。
- type:选填项,以什么单位过期,可选择second或s,minite或m,hour或h,day或d,默认day。
- expires:选填项,过期时间,与type对应使用,默认365;可以填具体日期字符串
- path:选填项,cookie有效范围,与原生cookie方法一致。
- domain:选填项,cookie的作用域,与原生cookie方法一致。
- secure:选填项,使用通过HTTPS传递cookie,与原生cookie方法一致。
- sameSite:选填项,是否禁止第三方获取cookie,与原生cookie方法一致。
举例:axCookie.set('myname':'AXUI',{path:'/'}),该例子设置myname=AXUI的cookie,并对全站有效。
axLocalStorage
该函数封装了原生localstorage方法,支持数据的写入、读取和删除。
写入数据,完整写法:axLocalStorage.set(key, value, {type:'day',expires:365})
- key:必填项,属性名。
- value:必填项,属性值,可以是数字、字符串、数组或对象,需要注意:函数或DOM节点将被忽略。
- type:选填项,以什么单位过期,可选择second或s,minite或m,hour或h,day或d,默认day。
- expires:选填项,过期时间,与type对应使用,默认0(永不过期,直到清除浏览器缓存或手动删除);可以填具体日期字符串。
读取数据,完整写法:axLocalStorage.get(key),key是指属性
删除数据,完整写法:axLocalStorage.remove(key),key可以是单个属性(单个删除)也可以是属性数组(批量删除)
找到键值,完整写法:axLocalStorage.key(num),num是指第几个属性
清空数据,完整写法:axLocalStorage.clear()
举例:axLocalStorage.set('myname':'AXUI'),该例子设置myname=AXUI的数据。
axDebounce
防抖函数通用用于keyup事件上,使用表现为:持续键入后停留一段时间才执行keyup事件。
完整写法:axDebounce(fun, delay,hold),参数说明如下:
- fun:必填项,执行函数。
- delay:选填项,延迟时间,单位毫秒,默认200。
- hold:选填项,非触发期间是否preventDefault和stopPropagation,默认false。
举例:略。
axThrottle
节流函数通用用于click事件上,使用表现为:连续快速点击多次也只会执行一次。
完整写法:axThrottle(fun, interval,hold),参数说明如下:
- fun:必填项,执行函数。
- interval:选填项,间隔时间,单位毫秒,默认200。
- hold:选填项,非触发期间是否preventDefault和stopPropagation,默认false。
举例:略。
axMoveArr
数组元素移动函数,在数组内可将某元素自由移动,返回原数组。
完整写法:axMoveArr(arr, from,to),参数说明如下:
- arr:必填项,操作的数组对象。
- from:必填项,将要移动的数组索引值。
- to:必填项,将要落脚的位置索引值。
举例:略。
axSort
用于数组排序,支持一维数组(list)和带children属性的二维数组(table)。
完整写法:axSort(data, sorts, type),参数说明如下:
- arr:必填项,操作的数组对象。
- sorts:必填项,排序方式,支持以下格式:
- 带attr属性的对象数组,col可以是数字或字符串,适用于table类型数据,例如:[{ col: 'age', attr:'label',order: 'desc' }...]
- 不带attr属性的对象数组,col通常是字符串,适用于一维数据,例如:[{ col: 'age',order: 'desc' }...]
- 带attr属性的对象,col可以是数字或字符串,适用于table类型数据,例如:{ col: 'age', attr:'',order: 'desc' }
- 不带attr属性的对象,col通常是字符串,适用于一维数据,例如:{ col: 'age',order: 'desc' }
- type:选填项,用于哪种数据类型,默认是一维数组(axList类型),可填table表示数据类型是axSheet类型
举例:略。
axExpires
用于设置cookie和localstorage的过期时间,返回到期时间(国标时间格式,非本地时间格式)。
完整写法:axExpires(type,expires),参数说明如下:
- type:必填项,设置时间的类型,字符类型,可设置s、m、h、d,也即使秒、分、时、日;默认是d
- expires:必填项,设置多久后过期,数字类型或日期字符串,与type对应使用,如果type是d,expires是2,则表示2天后过期;如果填写的是一个日期字符串则type参数无效。
举例:略。
axStrEnd
用于设置获取字符之前和之后的字符串片段。
完整写法:axStrEnd (str, key, type, inside),参数说明如下:
- str:必填项,字符串
- key:必填项,分割字符串的字符,可是一个字符也可以是多个字符。
- type:选填项,可填beforebegin(从左往右找)、afterbegin(从左往右找)、beforeend(从右往左找)和afterend(从右往左找),默认afterend。
- inside:选填项,返回的结果是否包含key字符,默认true包含,可选择false不包含。
如果str为空或key为空返回false;type是其他内容,返回空字符串。
let str = '123#456#789'; console.log(axStrEnd(str,'#','beforebegin',false)) //返回:'123' console.log(axStrEnd(str,'#','afterbegin',false)) //返回:'456#789' console.log(axStrEnd(str,'#','beforeend',false)) //返回:'123#456' console.log(axStrEnd(str,'#','afterend',false)) //返回:'789' console.log(axStrEnd(str,'#')) //返回:'#789'
axFindItem
用于根据不同格式的值从数组中找出一个对象。
完整写法:axFindItem(obj, data,map),参数说明如下:
- obj:必填项,将要检索的内容,可以是普通字符串、带#的字符串、数字、DOM节点、{id:''}单key对象或{id:'',label:'',heder:''}多key对象/[]对象
- data:必填项,将要检索的数据源。
- map:选填项,属性映射;默认map={string:'label',number:'id',dom:'headerDom'},也就是说如果obj是一个字符串那么,那么将从data中label属性查找匹配(完全匹配)。
如果obj=1,将从data中找到id===1的项,如果没有对应的属性则取索引;如果obj='china',将从data中找到label==='china'的项;如果obj='#one',将从data中找到dom的id属性为'one'的项;如果obj是一个DOM节点,将从data中找到dom===obj的项;如果obj是一个对象({}/[]),将从data直接找到对应项。
举例:略。
axGetDoms
从字符串找出节点数组。
完整写法:axFindItem(data),返回节点数组,data支持两种格式:
- 1、选择器字符串,例如#id、.className、NODENAME等
- 2、一个HTML节点
- 3、一个数组,数组每一项可以是选择器字符串或HTML节点
举例:略。
axArrSearch
根据多个关键字从数据组查找并获得新数组。新数组每一项包含的属性有:source数据源、weight关键字权重和keys包含的关键字
完整写法:axArrSearch (keys, props, source, options),参数说明如下:
- keys:必填项,将要检索的关键字,可以是单个字符串,带分隔符的字符串或字符串数组
- props:必填项,将要检索的数组对象中的属性,可以是单个字符串,带分隔符的字符串(强制英文逗号)或字符串数组。
- source:必填项,数据源数组。
- options:选填项,检索参数,支持以下属性:
- fuzzy:模糊匹配方式,默认为true以获得尽可能多的数据,可使用false为精确匹配以获得尽可能少的数据
- separator:关键字字符串的分隔符,默认是空格
- max:最多输出数据的length值,超过将被截掉。
- reorder:是否对检索结果按权重排序,默认true,可选择false不排序
- ignore:是否忽略英文大小写,默认true忽略,可选择false不忽略
举例:略。
axBreakpoints
可根据终端或浏览器环境合并参数对象。
完整写法:axBreakpoints (params, points),参数说明如下:
- params:必填项,为一个对象
- points:必填项,断点对象,key支持多种写法:
- 终端名(区间),'client-phone'(0~500px)、'client-pad'(500~900px)、'client-flip'(900~1200px)、'client-pro'(1200~1500px)和'client-pc'(1500px以上)
- 极限名(小于),'ceil-phone'(<500px)、'ceil-pad'(<900px)、'ceil-flip'(<1200px)、'ceil-pro'(<1500px)和'ceil-pc'(<4100px)
- 宽度名(小于),以“width-”命名,例如width-900表示浏览器宽度小于900则合并
- 是否为移动端(区间),以“mobile-true”和“mobile-false”命名,插件会通过浏览器navigator.userAgent来判断是否为移动端
- 纯数字(小于),例如900表示浏览器宽度小于900则合并,不过要注意一个问题,对象中的key为数字的话将被js引擎自动排序,例如points={900:'',500:''},打印出来的结果是{500:'',900:''}
举例:略。
axGetScrollObj
用于兼容处理firefox和chrome浏览器滚轮对象,返回滚轮对象{event:'',detail:''}。
完整写法:axGetScrollObj ()。
举例:略。
axIsScrollUp
用于兼容处理firefox和chrome浏览器滚轮方向,返回true或false。
完整写法:axIsScrollUp (e, detail)。
- e:必填项,滚轮事件
- detail:选填项,detail名称,一般不填,除非上文已经通过axGetScrollObj得到了detail名('detail'或'wheelDelta')
举例:略。