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')

举例:略。