-
pittypat.js 参考
info_outline此帮助文件还在修订中,部分内容还不完整。info_outlinepittypat.js 文件中定义的 API 要在页面完全加载成功后才有效,也就是说,要确保这些 API 有效,需要在 jQuery 的$()
内部使用它们。pittypat.js 除了自身的基础 JS API 外,还集成了 long.js,此文件可以用于处理 64 位整数。
-
命名空间
Pittypat 的根命名空间为
window.pittypat
,为了方便,使用$$
表示该命名空间。在根命名空间之下,包括如下的几个子命名空间:命名空间 描述 $$.util 提供一组辅助的方法,包括字符串、日期时间、数组、UUID 等的比较、格式化、类型判断、base64、字符串解压缩等方法。 $$.ui 提供与 UI 相关的一组方法,包括消息提示框和确认对话框相关的方法。 $$.web 提供客户端通过 AJAX 和 WebSocket 访问服务器的基础支持方法。 $$.user 提供与当前用户相关的方法,包括登录、注销、用户信息查询等相关的方法。 $$.com 开发者和应用命名空间的根。 -
基础扩展
提供对
Array
、Date
、Math
、Number
、Object
、String
以及jQuery
的一组扩展方法,包括提供一些扩展方法,以及对一些基本方法的 Polyfill,以弥补不同浏览器之间的差异。-
Array.prototype.copyWithin()
浅复制数组的一部分(从
start
到end - 1
)到同一数组中的另一个位置(target
),不改变数组的尺寸,但是可能会改变数组的内容。语法
array.copyWithin(target, [start], [end])
-
target
从 0 开始的目标位置,元素将被复制到此位置。
-
start
从 0 开始的要复制元素的起始位置。如果没有提供,则从 0 开始复制。
-
end
从 0 开始的要复制元素的截止位置,但是不复制此位置的元素。如果没有提供,则复制到
array.length
。 -
返回值
改变了内容后的数组。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
Array.prototype.copyWithin()
(MDN)。 -
-
Array.prototype.each()
遍历数组,对数组中的每一个元素执行一个函数,等价于
Array.prototype.forEach
。语法
array.each(fn(element, [index], [array]))
-
fn
在数组每一项上执行的函数,接收 3 个参数。
-
element
当前遍历到的元素。
-
index
从 0 开始的当前遍历到的索引位置。
-
array
数组本身。
-
描述
参见
Array.prototype.forEach()
(MDN)。示例
-
-
Array.prototype.fill()
使用一个值(
value
)填充数组中指定范围内(从start
到end - 1
)的数组项。语法
array.fill(value, [start], [end])
-
value
用来填充数组的值。
-
start
从 0 开始的填充起始位置。如果没有提供,则从 0 开始。
-
end
从 0 开始的填充截止位置,不包括此位置。如果没有提供,则为
array.length
。 -
返回值
改变了内容后的数组。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
Array.prototype.fill()
(MDN)。 -
-
Array.prototype.find()
返回数组中满足指定测试函数的第一个元素。如果没有找到,则返回
undefined
。语法
array.find(where(element, [index], [array]))
-
where
在数组每一项上执行的测试函数,接收 3 个参数,并返回一个布尔值。
-
element
当前遍历到的元素。
-
index
从 0 开始的当前遍历到的索引位置。
-
array
数组本身。
-
-
返回值
复合指定条件的第一个元素,如果没有找到,则返回
undefined
。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
Array.prototype.find()
(MDN)。示例
-
-
Array.prototype.findIndex()
返回数组中满足指定测试函数的第一个元素的位置。否则返回 -1。
语法
array.findIndex(where(element, [index], [array]))
-
where
在数组每一项上执行的测试函数,接收 3 个参数,并返回一个布尔值。
-
element
当前遍历到的元素。
-
index
从 0 开始的当前遍历到的索引位置。
-
array
数组本身。
-
-
返回值
从 0 开始的复合指定条件的第一个元素的位置,如果没有找到,则返回 -1。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Array.prototype.findIndex()(MDN)。
示例
-
-
Array.prototype.includes()
判断数组中是否包含指定的值。
语法
array.includes(value, [start])
-
value
要从数组中查找的值。
-
start
从 0 开始的查找起始位置,如果没有提供,则默认为 0。
-
返回值
表示值是否存在的一个布尔值。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
Array.prototype.includes()
(MDN)。示例
-
-
Array.prototype.max()
返回数组中的最大值,相当于
Math.max.apply(null, array)
。语法
array.max()
-
返回值
数组中的最大值。
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
Array.prototype.min()
返回数组中的最小值,相当于
Math.min.apply(null, array)
。语法
array.min()
-
返回值
数组中的最小值。
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
Date.prototype.addDays()
在指定的日期上加上指定的天数,并返回一个新的日期,不改变原来的日期。
语法
date.addDays(days)
-
days
一个整数,表示要添加的天数,可以小于 0。
-
返回值
date
加上days
后的新的日期。
描述
这是 Pittypat 扩展的一个函数。
如果需要按工作日计算,请考虑使用基础应用
calendar
中的~/com/waln/calendar/calc/add
服务 API。示例
-
-
Date.prototype.format()
返回日期时间值的格式化后的字符串。
语法
date.format([precision], [sp], [sundayFirst])
-
precision
一个字符串,表示格式化精度,取如下值之一:
year
、month
、week
、day
、hour
、minute
与second
。如果没有提供,默认为second
。 -
sp
一个字符串,表示日期年月日之间的分隔符,小时、分钟和秒之间的分隔符总是使用
:
。如果没有提供,默认为/
。 -
sundayFirst
一个布尔值,指示星期日是否是一周的第一天。如果没有提供,默认为
false
,此时一周的第一天是周一。 -
返回值
一个字符串,表示可用于显示的日期时间值的格式化字符串。根据
precision
的不同,返回结果不同:-
year
格式为
yyyy
的四位年份的字符串。此时sp
和sundayFirst
不起作用。 -
month
格式为
yyyy{sp}nn
的字符串,yyyy
表示四位年份,nn
表示两位月份(01~12
),不足两位用0
补齐。此时sundayFirst
不起作用。 -
week
格式为
yyyy{sp}ww
的字符串,yyyy
表示四位年份,ww
表示两位周序号(01~53
),不足两位用0
补齐。sundayFirst
仅对此精度起作用。 -
day
格式为
yyyy{sp}nn{sp}dd
的字符串,yyyy
表示四位年份,nn
表示两位月份(01~12
),不足两位用0
补齐,dd
表示两位日期(01~31
),不足两位用0
补齐。此时sundayFirst
不起作用。 -
hour
格式为
yyyy{sp}nn{sp}dd hh
的字符串,yyyy
表示四位年份,nn
表示两位月份(01~12
),不足两位用0
补齐,dd
表示两位日期(01~31
),不足两位用0
补齐,hh
表示两位小时(01~23
),不足两位用0
补齐。此时sundayFirst
不起作用。 -
minute
格式为
yyyy{sp}nn{sp}dd hh:mm
的字符串,yyyy
表示四位年份,nn
表示两位月份(01~12
),不足两位用0
补齐,dd
表示两位日期(01~31
),不足两位用0
补齐,hh
表示两位小时(01~23
),不足两位用0
补齐,mm
表示两位分钟数(01~59
),不足两位用0
补齐。此时sundayFirst
不起作用。 -
second
格式为
yyyy{sp}nn{sp}dd hh:mm:ss
的字符串,yyyy
表示四位年份,nn
表示两位月份(01~12
),不足两位用0
补齐,dd
表示两位日期(01~31
),不足两位用0
补齐,hh
表示两位小时(01~23
),不足两位用0
补齐,mm
表示两位分钟数(01~59
),不足两位用0
补齐,ss
表示两位秒数(01~59
),不足两位用0
补齐。此时sundayFirst
不起作用。
-
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
Date.prototype.getExactMonth()
返回从 1 到 12 的月份值,相当于
getMonth() + 1
。语法
date.getExactMonth()
-
返回值
一个整数,从 1 到 12 的月份值。
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
Date.prototype.getFullMonth()
返回格式为
yyyymm
的一个整数,yyyy
表示年份,mm
表示月份(01~12)。语法
date.getFullMonth()
-
返回值
一个包含了年份和月份的整数。
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
Date.prototype.getFullWeek()
返回格式为
yyyyww
的一个整数,yyyy
表示年份,ww
表示周数(01~53)。相当于getWeek(true, sundayFirst)
。语法
date.getFullWeek([sundayFirst])
-
sundayFirst
一个布尔值,指示星期日是否是一周的第一天。如果没有提供,默认为
false
,此时一周的第一天是周一。 -
返回值
一个包含了年份和周数的整数。
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
Date.prototype.getWeek()
返回日期在目标年份中的周数(1-53)。
语法
date.getWeek([fullWeek], [sundayFirst])
-
fullWeek
一个布尔值,
true
表示返回格式为yyyyww
的值,yyyy
表示年份,ww
表示从 01~53 的周数。false
仅仅返回周数。如果没有提供,默认为false
。 -
sundayFirst
一个布尔值,指示星期日是否是一周的第一天。如果没有提供,默认为
false
,此时一周的第一天是周一。 -
返回值
一个包含了年份和周数的整数,或者仅仅是周数的整数。
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
Date.prototype.weekDates()
返回日期所在周的第一天和最后一天。
语法
date.weekDates([sundayFirst])
-
sundayFirst
一个布尔值,指示星期日是否是一周的第一天。如果没有提供,默认为
false
,此时一周的第一天是周一。 -
返回值
一个有两个日期时间值元素的数组,数组第一个元素是第一天,第二个元素是最后一天。
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
Math.log10()
计算以 10 为底的对数。
语法
Math.log10(num)
-
num
一个数字值。
-
返回值
num
以 10 为底的对数。如果num
小于 0, 则返回 NaN。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
Math.log10()
(MDN)。 -
-
Math.log2()
计算以 2 为底的对数。
语法
Math.log2(num)
-
num
一个数字值。
-
返回值
num
以 2 为底的对数。如果num
小于 0, 则返回 NaN。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
Math.log2()
(MDN)。 -
-
Math.trunc()
去掉数字的小数部分,只保留整数部分。
语法
Math.trunc(num)
-
num
一个数字值。
-
返回值
num
的整数部分。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
Math.trunc()
(MDN)。示例
-
-
Number.isNaN()
判断一个数字值是否是
NaN
。语法
Number.isNaN(num)
-
num
一个数字值。如果不是数字,则返回
false
。 -
返回值
num
是一个数字,并且为NaN
时返回true
,其他情况返回false
。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
Number.isNaN()
(MDN)。示例
-
-
Number.MAX_SAFE_INTEGER
一个常量数字值,表示在 JS 中的最大安全整数,其值为
9007199254740991
(253 - 1
)。安全的意思是指能够准确地表示整数,并能正确地比较整数。语法
Number.MAX_SAFE_INTEGER
描述
只有当前 JS 没有提供此常量时,才会扩展该函数。参见
Number.MAX_SAFE_INTEGER
(MDN)。 -
Number.MIN_SAFE_INTEGER
一个常量数字值,表示在 JS 中的最小安全整数,其值为
-9007199254740991
(-(253 - 1)
)。安全的意思是指能够准确地表示整数,并能正确地比较整数。语法
Number.MIN_SAFE_INTEGER
描述
只有当前 JS 没有提供此常量时,才会扩展该函数。参见
Number.MIN_SAFE_INTEGER
(MDN)。 -
Number.isSafeInteger()
判断一个数字值是否是安全的整数。安全的意思是指能够准确地表示整数,并能正确地比较整数。
语法
Number.isSafeInteger(num)
-
num
一个数字值。如果不是数字,则返回
false
。 -
返回值
num
是一个数字,并且介于MIN_SAFE_INTEGER
和MAX_SAFE_INTEGER
之间,则返回true
,否则返回false
。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
Number.isSafeInteger()
(MDN)。32 位整数一定是安全的整数,但是 64 位整数则不一定是安全的整数。正是因为这个原因,pittypat 在将 64 位整数转换为 JSON 发送到客户端时,总是将 64 位整数转换为字符串形式,而不是数字形式。为了方便地处理 64 位整数,pittypat.js 文件中集成了 long.js,用于处理 64 位字符串格式的整数。
示例
-
-
Object.assign()
将源对象中所有可枚举属性的值复制到目标对象。
语法
Object.assign(target, ...sources)
-
target
目标对象。
-
sources
一个或多个源对象。
-
返回值
目标对象。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
Object.assign()
(MDN)。示例
-
-
String.prototype.charPointAt()
返回字符串中指定位置的 Unicode 非负整数编码值。
语法
str.charPointAt(pos)
-
pos
从 0 开始的位置。
-
返回值
一个非负整数。如果指定位置上没有找到元素,则返回
undefined
。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
String.prototype.charPointAt()
(MDN)。示例
-
-
String.fromCodePoint()
返回由指定 Unicode 编码序列创建的字符串。
语法
String.fromCodePoint(num1, [...numN])
-
num1, [...numN]
一个或多个 Unicode 编码值。如果传入无效的编码值,则会产生
RangeError
异常。 -
返回值
一个从指定编码序列创建的字符串。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
String.fromCodePoint()
(MDN)。示例
-
-
String.prototype.endsWith()
检查指定的字符串是否以另一个字符串结尾。
语法
str.endsWith(searchString, [end])
-
searchString
要搜索的字符串。
-
end
在 str 中搜索 searchString 的结束位置,默认为
str.length
。 -
返回值
一个布尔值,指示
str
是否以searchString
结尾。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
String.prototype.endsWith()
(MDN)。 -
-
String.prototype.includes()
检查指定的字符串中是否包含另一个字符串。
语法
str.includes(searchString, [start])
-
searchString
要搜索的字符串。
-
start
在 str 中搜索 searchString 的起始位置,默认为
0
。 -
返回值
一个布尔值,指示
str
是否包含searchString
。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
String.prototype.includes()
(MDN)。 -
-
String.prototype.left()
返回指定字符串左边指定长度的子字符串。
语法
str.left(len)
-
len
子字符串的长度。如果大于或等于
str.length
,则返回完整的str
。 -
返回值
一个最大长度为
len
字符串,该字符串是从str
左侧截取的字符串。
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
String.prototype.padEnd()
检查指定的字符串是否达到指定长度,如果没有达到指定长度,则使用另一个字符串在末尾进行填充,直至达到指定长度。
语法
str.padEnd(len, [padString])
-
len
要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
-
padString
填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。默认为 " "(空格)。
-
返回值
在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
String.prototype.padEnd()
(MDN)。示例
-
-
String.prototype.padLeft()
检查指定的字符串是否达到指定长度,如果没有达到指定长度,则使用另一个字符串在开始进行填充,直至达到指定长度。
语法
str.padLeft(len, padString) str.padLeft(padString, len)
-
len
要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
-
padString
填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。默认为 " "(空格)。
-
返回值
在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。
描述
这是 Pittypat 扩展的一个函数,与
padStart
等价,只是两个参数的位置可以互换。 -
-
String.prototype.padRight()
检查指定的字符串是否达到指定长度,如果没有达到指定长度,则使用另一个字符串在末尾进行填充,直至达到指定长度。
语法
str.padRight(len, padString) str.padRight(padString, len)
-
len
要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
-
padString
填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。默认为 " "(空格)。
-
返回值
在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。
描述
这是 Pittypat 扩展的一个函数,与
padEnd
等价,只是两个参数的位置可以互换。 -
-
String.prototype.padStart()
检查指定的字符串是否达到指定长度,如果没有达到指定长度,则使用另一个字符串在开始进行填充,直至达到指定长度。
语法
str.padStart(len, [padString])
-
len
要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
-
padString
填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。默认为 " "(空格)。
-
返回值
在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
String.prototype.padStart()
(MDN)。示例
-
-
String.prototype.repeat()
通过将指定字符串重复指定次数的方式创建一个新字符串。
语法
str.repeat(n)
-
n
要重复的次数。小于 0 将产生错误,等于 0 则返回空字符串。
-
返回值
str
重复n
次后创建的新字符串。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
String.prototype.repeat()
(MDN)。示例
-
-
String.prototype.replaceAll()
使用新的子字符串替换指定字符串中的所有匹配的子字符串。返回新字符串,不改变原始字符串。
语法
str.replaceAll(oldStr, newStr)
-
oldStr
要被替换的原始子字符串,可以是正则表达式或字符串。
-
newStr
要替换的新子字符串,可以是字符串或一个每次替换都执行的函数。
-
返回值
替换后的新字符串。
描述
这是 Pittypat 扩展的一个函数。相当于
replace(new RegExp(oldStr, 'g'), newStr)
。参见String.prototype.replace()
(MDN)。 -
-
String.prototype.right()
返回指定字符串右边指定长度的子字符串。
语法
str.right(len)
-
len
子字符串的长度。如果大于或等于
str.length
,则返回完整的str
。 -
返回值
一个最大长度为
len
字符串,该字符串是从str
右侧截取的字符串。
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
String.prototype.startsWith()
检查指定的字符串是否以另一个字符串开始。
语法
str.startsWith(searchString, [start])
-
searchString
要搜索的字符串。
-
start
在 str 中搜索 searchString 的开始位置,默认为
0
。 -
返回值
一个布尔值,指示
str
是否以searchString
开始。
描述
只有当前 JS 没有提供此函数时,才会扩展该函数。参见
String.prototype.startsWith()
(MDN)。 -
-
String.prototype.trim()
从指定字符串中移除指定位置的空白字符。不改变原始字符串。
语法
str.trim([mode])
-
mode
一个不区分大小写的字符串,表示去除方式。可以取值如下:
-
start | begin
去除开始位置的空白字符。
-
end
去除结束位置的空白字符。
-
all
去除所有空白字符。
-
其他或不提供
去除开始和结束位置的空白字符。
-
-
返回值
一个去除了指定位置空白字符的新字符串。
描述
这是 Pittypat 扩展的一个函数。
示例
-
-
jQuery.fn.caret()
获取(没有提供任何参数时)或者设置(提供了至少一个参数时)文本框中光标(选中)的位置。
语法
$(selector).caret([start], [end])
-
start
可选。字符串或数字。字符串取值
'start'
或'end'
,表示文本框中当前文本的起始位置(0)和结束位置(字符串长度)。如果是数字,表示从 0 开始的位置。如果超过字符串长度,则使用字符串长度。 -
end
可选。字符串或数字。字符串取值
'start'
或'end'
,表示文本框中当前文本的起始位置(0)和结束位置(字符串长度)。如果是数字,表示从 0 开始的位置。如果超过字符串长度,则使用字符串长度。
描述
jQuery 并没有提供获取或者设置文本框光标或选中文本的方法,而光标位置在很多时候对于提升用户体验非常重要。这是 Pittypat 对 jQuery 的扩展。
示例
-
-
jQuery.fn.multiline()
设置指定元素的内部多行文本。
语法
$(selector).multiline(text)
-
text
使用
\r\n
、\r
或\n
分隔的多行文本。
描述
类似于 jQuery 的
$(selector).text()
,不同的是text
无法对文本进行换行显示。multiline
会首先使用\r\n
、\r
或\n
切割文本为一个字符串数组,每一个数组元素使用一个span
封装,不同span
之间添加<br />
来换行显示。示例
-
-
jQuery.fn.tv()
获取或者设置元素的值或文本。
语法
$(selector).tv([value|text])
-
value|text
要设置的值或文本。如果没有提供参数,则获取元素的值或文本。
描述
如果目标元素是文本框、日期时间输入框、数字输入框、复选框、单选框等具有
value
值的元素,相当于jQuery.fn.val()
。对于其他元素,比如span
、p
、div
等元素,相当于jQuery.fn.text()
。示例
-
-
jQuery.fn.mdcInit()
将
jQuery
集合中的每一个对象作为 MDC 上下文初始化 Material Design Component。语法
$(selector).mdcInit()
描述
初始化
jQuery
集合中每一个元素内的 MDC 组件。示例
-
-
$$
window.pittypat
的根命名空间。作为一个函数可以注册登录用户或匿名用户的处理程序。-
$$
window.pittypat
的根命名空间,$$
是window.pittypat
的别名。示例
-
$$(options|function, [more])
当 $$ 作为一个函数时,此函数用于向服务器查询当前已经登录用户的用户信息,并根据返回的用户信息执行不同的操作。
参数
more
是一个可选参数,类型为Boolean
,表示是否还需要添加更多的用户信息处理程序。默认为false
。如果该参数为true
,表示仅仅注册init
、authorized
和anonymous
处理程序,并不实际向服务器查询用户信息。如果
$$
参数是一个对象,则对象options
的定义如下:{ data: {Any}, init: {Function}, authorized: {Function}, anonymous: {Function} }
-
data
传递给
init
、authorized
和anonymous
的数据,可以是任何类型的数据或函数。如果是一个函数,则执行该函数,并将函数返回结果传递给init
、authorized
和anonymous
。当data
为函数时,该函数的参数是一个对象,结构如下:{ user: {Object}, app: {Object}, mod: {Object}, init: {Boolean}, first: {Boolean} }
-
user
只读属性。表示当前用户的用户信息,如果是匿名用户,则为
null
。 -
app
只读属性。表示当前应用的命名空间,如果无法定位,则为
null
。 -
mod
只读属性。表示当前模块的命名空间,如果无法定位,则为
null
。 -
init
只读属性。表示是否正在初始化页面。
-
first
只读属性。表示是否首次执行
authorized
或anonymous
。
-
-
init
在首次执行
authorized
或anonymous
前执行的函数,此函数整个页面只会执行一次。如果没有提供该函数,则什么都不做,也就是没有默认行为。此函数的参数为一个对象,结构定义如下:
{ user: {Object}, app: {Object}, mod: {Object}, init: {Boolean}, first: {Boolean}, data: {Any} }
-
user
只读属性。表示当前用户的用户信息,如果是匿名用户,则为
null
。 -
app
只读属性。表示当前应用的命名空间,如果无法定位,则为
null
。 -
mod
只读属性。表示当前模块的命名空间,如果无法定位,则为
null
。 -
init
只读属性。表示是否正在初始化页面,总是为
true
。 -
first
只读属性。表示是否接下来首次执行
authorized
或anonymous
。 -
data
读写属性。前述的
data
数据,或data
函数返回的结果。
-
-
authorized
当用户不是匿名用户时,或者用户登录成功后执行的函数。如果没有提供该函数,则什么都不做,也就是没有默认行为。
此函数的参数为一个对象,结构定义如下:
{ user: {Object}, app: {Object}, mod: {Object}, init: {Boolean}, first: {Boolean}, data: {Any} }
-
user
只读属性。表示当前用户的用户信息,如果是匿名用户,则为
null
。 -
app
只读属性。表示当前应用的命名空间,如果无法定位,则为
null
。 -
mod
只读属性。表示当前模块的命名空间,如果无法定位,则为
null
。 -
init
只读属性。表示是否正在初始化页面。
-
first
只读属性。表示是否首次执行
authorized
。 -
data
读写属性。前述的
data
数据,或data
函数返回的结果。
-
-
anonymous
当用户是匿名用户时,或者用户退出后执行的函数。如果没有提供该函数,则默认返回首页。
此函数的参数为一个对象,结构定义如下:
{ user: {Object}, app: {Object}, mod: {Object}, init: {Boolean}, first: {Boolean}, data: {Any} }
-
user
只读属性。表示当前用户的用户信息,如果是匿名用户,则为
null
。 -
app
只读属性。表示当前应用的命名空间,如果无法定位,则为
null
。 -
mod
只读属性。表示当前模块的命名空间,如果无法定位,则为
null
。 -
init
只读属性。表示是否正在初始化页面。
-
first
只读属性。表示是否首次执行
anonymous
。 -
data
读写属性。前述的
data
数据,或data
函数返回的结果。
-
如果
$$
参数是一个函数,该函数将作为options
.authorized
,options
的其他属性不提供或使用默认值。示例
以下两种方式是等价的。
-
-
$$.val()
语法
$$.val(v, [args], [_this])
-
v
一个值,或一个函数。如果
v
不是一个函数,则$$.val()
直接返回v
。如果v
是一个函数,则使用args
作为函数参数执行函数,并将返回值作为$$.val()
的返回值。 -
args
当
v
是一个函数时,传递给v
的参数。可以是任何值。 -
_this
当
v
是一个函数时,在函数v
内部的this
值。
示例
-
-
-
$$.util
提供一组辅助函数,包括格式化、日期时间、字符串、字节数组、数字、UUID、数组等相关的函数。
-
$$.util.fmt.second()
将一个日期时间值格式化为字符串,精确到秒。年月日之间可以指定分隔符,时分秒之间总是使用 : 分隔,日期与时间之间总是使用空格分隔。
语法
$$.util.fmt.second(datetime, [seperator])
-
datetime
一个
Date
对象,或者一个从服务器返回的 JSON 格式的日期时间对象。JSON 结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
seperator
一个字符串,表示年月日之间的分隔符。如果没有提供,则默认使用 /。
-
返回值
一个日期时间字符串。
示例
-
-
$$.util.fmt.minute()
将一个日期时间值格式化为字符串,精确到分钟。年月日之间可以指定分隔符,时分之间总是使用 : 分隔,日期与时间之间总是使用空格分隔。
语法
$$.util.fmt.minute(datetime, [seperator])
-
datetime
一个
Date
对象,或者一个从服务器返回的 JSON 格式的日期时间对象。JSON 结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
seperator
一个字符串,表示年月日之间的分隔符。如果没有提供,则默认使用 /。
-
返回值
一个日期时间字符串。
示例
-
-
$$.util.fmt.hour()
将一个日期时间值格式化为字符串,精确到小时。年月日之间可以指定分隔符,日期与时间之间总是使用空格分隔。
语法
$$.util.fmt.hour(datetime, [seperator])
-
datetime
一个
Date
对象,或者一个从服务器返回的 JSON 格式的日期时间对象。JSON 结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
seperator
一个字符串,表示年月日之间的分隔符。如果没有提供,则默认使用 /。
-
返回值
一个日期时间字符串。
示例
-
-
$$.util.fmt.day()
将一个日期时间值格式化为字符串,精确到日期。年月日之间可以指定分隔符。
语法
$$.util.fmt.day(datetime, [seperator])
-
datetime
一个
Date
对象,或者一个从服务器返回的 JSON 格式的日期时间对象。JSON 结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
seperator
一个字符串,表示年月日之间的分隔符。如果没有提供,则默认使用 /。
-
返回值
一个日期时间字符串。
示例
-
-
$$.util.fmt.timeSecond()
将一个日期时间值的时间部分格式化为字符串,时分秒之间总是使用 : 分隔。
语法
$$.util.fmt.timeSecond(datetime)
-
datetime
一个
Date
对象,或者一个从服务器返回的 JSON 格式的日期时间对象。JSON 结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
返回值
一个日期时间字符串。
示例
-
-
$$.util.fmt.timeMinute()
将一个日期时间值的时间部分格式化为字符串,时分之间总是使用 : 分隔。
语法
$$.util.fmt.timeMinute(datetime)
-
datetime
一个
Date
对象,或者一个从服务器返回的 JSON 格式的日期时间对象。JSON 结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
返回值
一个日期时间字符串。
示例
-
-
$$.util.time.from()
将一个从服务器返回的 JSON 格式的日期时间对象转换为
Date
。语法
$$.util.time.from(o)
-
o
从服务器返回的 JSON 格式的日期时间对象,结构如下:
{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
返回值
一个
Date
值。
-
-
$$.util.time.to()
将一个
Date
值转换为 JSON 格式的日期时间对象。语法
$$.util.time.to(datetime)
-
datetime
一个
Date
值。 -
返回值
JSON 格式的日期时间对象,结构如下:
{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
-
$$.util.time.now()
返回表示当前时间的
Date
值,相当于new Date()
。语法
$$.util.time.now()
-
返回值
一个表示当前日期时间的
Date
值。
-
-
$$.util.time.name()
返回指定日期时间的名称。
语法
$$.util.time.name(datetime, [precision])
-
datetime
一个
Date
值,或者 JSON 格式的日期时间对象,结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
precision
一个不区分大小写的字符串,表示返回的时间名称的精度,取值 h、m 或 s 之一,分别表示精确到小时、分钟和秒。默认为 m。
-
返回值
一个表示当前日期时间的
Date
值。
示例
-
-
$$.util.time.compareAsc()
比较两个日期时间的大小,用于根据日期时间进行升序排序。
语法
$$.util.time.compareAsc(x, y)
-
x
一个
Date
值,或者 JSON 格式的日期时间对象,结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
y
一个
Date
值,或者 JSON 格式的日期时间对象,结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
返回值
如果 x 大于 y,返回大于 0 的值,如果 x 小于 y,返回小于 0 的值,如果 x 等于 y,则返回 0。
示例
-
-
$$.util.time.compareDesc()
比较两个日期时间的大小,用于根据日期时间进行降序排序。
语法
$$.util.time.compareDesc(x, y)
-
x
一个
Date
值,或者 JSON 格式的日期时间对象,结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
y
一个
Date
值,或者 JSON 格式的日期时间对象,结构如下:{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
返回值
如果 x 大于 y,返回小于 0 的值,如果 x 小于 y,返回大于 0 的值,如果 x 等于 y,则返回 0。
示例
-
-
$$.util.date.from()
将一个从服务器返回的 JSON 格式的日期时间对象转换为
Date
,将时间部分设置为 0。语法
$$.util.date.from(o)
-
o
从服务器返回的 JSON 格式的日期时间对象,结构如下:
{ year: 2018, month: 1, day: 12, hour: 22, minute: 35, second: 18 }
-
返回值
一个
Date
值。
-
-
$$.util.date.to()
将一个
Date
值转换为 JSON 格式的日期时间对象,忽略时间部分。语法
$$.util.date.to(datetime)
-
datetime
一个
Date
值。 -
返回值
JSON 格式的日期时间对象,结构如下:
{ year: 2018, month: 1, day: 12 }
-
-
$$.util.date.today()
返回表示当前日期的
Date
值。语法
$$.util.date.today()
-
返回值
一个表示当前日期的
Date
值,时间部分为 0。
-
-
$$.util.date.isLeapYear()
判断指定年份是否是闰年。
语法
$$.util.date.isLeapYear(year)
-
year
一个年份值。
-
返回值
如果目标年份是闰年,则返回
true
,否则返回false
。
-
-
$$.util.date.daysInMonth()
返回指定年份中指定月份的天数。
语法
$$.util.date.daysInMonth(year, month)
-
year
一个年份值。
-
month
一个月份值,从 1 ~ 12。
-
返回值
一个数字值,表示指定月份中的总天数。
-
-
$$.util.date.weekDates()
返回指定序号的周的第一天和最后一天对应的日期。
语法
$$.util.date.weekDates(yw, [sundayFirst])
-
yw
一个数字值,格式为 yyyyww,其中 yyyy 表示年份,ww 表示从 01 ~ 53 的周序号。
-
sundayFirst
一个布尔值,
true
表示一周第一天为星期日,false
表示一周第一天为星期一。默认为false
。 -
返回值
一个对象,结构如下:
{ firstDay: {Date}, lastDay: {Date} }
示例
由于时区的原因,在控制台中输出时可能会有所偏差。
-
-
$$.util.int.parse()
严格地按照十进制解析整数字符串。
语法
$$.util.int.parse(s)
-
s
一个数字字符串。
-
返回值
一个十进制整数数字。如果不是有效的整数数字,则返回
NaN
。如果字符串为 Infinity(区分大小写),则返回Infinity
。
描述
相对于
parseInt()
,$$.util.int.parse()
总是按十进制解析字符串。示例
-
-
$$.util.int.random()
返回大于等于 min 小于 max 的一个随机整数。
语法
$$.util.int.random(min, max)
-
min
最小随机整数,包含该值。
-
max
最大随机整数,不包含该值。
-
返回值
一个十进制整数数字。该数字大于等于 min 小于 max。
-
-
$$.util.float.parse()
严格地按照十进制解析浮点数字符串。
语法
$$.util.float.parse(s)
-
s
一个数字字符串。
-
返回值
一个十进制浮点数字。如果不是有效的浮点数字,则返回
NaN
。如果字符串为 Infinity(区分大小写),则返回Infinity
。
描述
相对于
parseFloat()
,$$.util.float.parse()
总是按十进制解析字符串。示例
-
-
$$.util.float.random()
返回大于等于 min 小于 max 的一个随机浮点数。
语法
$$.util.float.random(min, max)
-
min
最小随机浮点数,包含该值。
-
max
最大随机浮点数,不包含该值。
-
返回值
一个十进制浮点数数字。该数字大于等于 min 小于 max。
-
-
$$.util.binary.toBase64()
将指定的字节数组转换为 BASE64 字符串。
语法
$$.util.binary.toBase64(bytes)
-
bytes
一个字节数组。
-
返回值
字节数组的 BASE64 字符串。如果没有提供
bytes
,或者数组长度为 0,则返回空字符串。
示例
-
-
$$.util.binary.fromBase64()
将指定的 BASE64 字符串转换为字节数组。
语法
$$.util.binary.fromBase64(str)
-
str
一个 BASE64 字符串。
-
返回值
一个字节数组,如果没有提供字符串,或者字符串长度为 0,则返回空数组。如果字符串不是有效的 BASE64,则产生异常错误。
示例
-
-
$$.util.string.toUtf8()
将指定的字符串转换为 utf-8 字节数组。
语法
$$.util.string.toUtf8(str)
-
str
一个字符串。
-
返回值
一个字节数组,如果没有提供字符串,或者字符串长度为 0,则返回空数组。
-
-
$$.util.string.fromUtf8()
将指定的 utf-8 字节数组转换为字符串。
语法
$$.util.string.fromUtf8(bytes)
-
bytes
一个字节数组。
-
返回值
一个字符串,表示目标字节数组按 utf-8 转换后的字符串。
-
-
$$.util.string.compress()
将指定的字符串压缩为字节数组。用于对字符串进行压缩。
语法
$$.util.string.compress(str)
-
str
一个字符串。
-
返回值
一个字节数组。
描述
此方法根据 LZString 调整实现。
-
-
$$.util.string.decompress()
将指定字节数组解压缩为字符串。这是
compress
的反方向操作。语法
$$.util.string.decompress(bytes)
-
bytes
一个字节数组。
-
返回值
一个字符串。
描述
此方法根据 LZString 调整实现。
-
-
$$.util.string.toBase64()
将指定的字符串编码为 BASE64 字符串。
语法
$$.util.string.toBase64(str, [compress])
-
str
一个字符串。
-
compress
一个布尔值,指示是否压缩字符串。
-
返回值
BASE64 字符串。如果没有提供
str
,或者长度为 0,则返回空字符串。
描述
如果启用了压缩,则将字符串压缩为字节数组后将字节数组转换为 BASE64 字符串。如果没有启用了压缩,则将字符串转换为 utf-8 字节数组后将字节数组转换为 BASE64 字符串。
示例
-
-
$$.util.string.fromBase64()
将指定的 BASE64 字符串解码为原始字符串。
语法
$$.util.string.fromBase64(str, [decompress])
-
str
一个 BASE64 字符串。
-
decompress
一个布尔值,指示是否需要解压缩。
-
返回值
BASE64 解码后的原始字符串。
-
-
$$.util.string.compareAsc()
比较两个字符串的大小,用于根据字符串进行升序排序。
语法
$$.util.string.compareAsc(x, y)
-
x
一个
String
值。 -
y
一个
String
值。 -
返回值
如果 x 大于 y,返回大于 0 的值,如果 x 小于 y,返回小于 0 的值,如果 x 等于 y,则返回 0。
示例
-
-
$$.util.string.compareDesc()
比较两个字符串的大小,用于根据字符串进行降序排序。
语法
$$.util.string.compareDesc(x, y)
-
x
一个
String
值。 -
y
一个
String
值. -
返回值
如果 x 大于 y,返回小于 0 的值,如果 x 小于 y,返回大于 0 的值,如果 x 等于 y,则返回 0。
示例
-
-
$$.util.uuid.v4()
创建一个新的 UUID。
语法
$$.util.uuid.v4(fmt)
-
fmt
返回的 UUID 字符串的格式指示字符串,取值:
d、D、b、B、n、N、i、I
之一,其中i
和I
是等价的。 -
返回值
一个字符串,表示新创建的 UUID 的字符串形式,其格式由
fmt
参数决定。
示例
-
-
$$.util.uuid.toBase64()
将指定的字符串格式的 UUID 编码为 BASE64 字符串。
语法
$$.util.uuid.toBase64(str)
-
str
格式为
d、D、b、B、n、N
之一的 UUID 的字符串。 -
返回值
UUID 的 BASE64 字符串,长度为 22。'+' 和 '/' 分别使用 '-' 和 '_' 替换,也就是说返回的字符串是对 URL 友好的字符串。
示例
-
-
$$.util.uuid.fromBase64()
将指定的 BASE64 字符串解码为原始 UUID 字符串。
语法
$$.util.uuid.fromBase64(str, [fmt])
-
str
一个 BASE64 字符串。
-
fmt
返回值的格式字符串,取值
d、D、b、B、n、N
之一。默认为D
。默认为D
。 -
返回值
BASE64 解码后的原始 UUID 字符串。
-
-
$$.util.array.sort()
对指定的数组使用指定的排序函数进行排序。
对于非分页查询,尽量不使用
ORDER BY
在数据库对结果集合进行排序,而是改用客户端的数组排序方法对返回的结果数组进行排序。这样可以降低数据库的负担。语法
$$.util.array.sort(array, compare)
-
array
要排序的数组。排序后会改变该数组。
-
compare
排序使用的比较函数,该函数定义如下:
int compare(x, y)
-
x
要比较的第一个元素。
-
y
要比较的第二个元素。
-
返回值
一个整数。如果 x < y,返回小于 0 的值。如果 x > y,返回大于 0 的值。否则返回 0。
-
-
返回值
返回排序后的数组。
示例
-
-
$$.util.is.identifier()
判断指定的字符串是否是一个有效的标识符。
有效标识符定义如下:
首字符必须是字母。
其他字符是字母、数字或下划线。
最长不超过 128。
语法
$$.util.is.identifier(s, [max])
-
s
要判断的字符串。
-
max
标识符的最大长度,不能超过 128。如果没有提供,默认为 30。
-
返回值
如果 s 是一个有效的标识符,返回 true,否则返回 false。
-
$$.util.is.uuid()
判断指定的字符串是否是一个有效的 UUID/GUID。
语法
$$.util.is.uuid(s)
-
s
要判断的字符串。可以是长度为 22 或 24 的 BASE64,或者长度为 32 或 36 的 UUID/GUID 字符串。
-
返回值
如果 s 是一个有效的 UUID/GUID,返回 true,否则返回 false。
-
-
$$.util.is.email()
判断指定的字符串是否是一个有效的电子邮件地址。
语法
$$.util.is.email(s)
-
s
要判断的字符串。
-
返回值
如果 s 是一个有效的电子邮件地址,返回 true,否则返回 false。
-
-
$$.util.is.mobile()
判断指定的字符串是否是一个有效的手机号码,目前仅支持长度为 11 的中国大陆手机号码。
语法
$$.util.is.mobile(s)
-
s
要判断的字符串。
-
返回值
如果 s 是一个有效的手机号码,返回 true,否则返回 false。
-
-
$$.util.is.password()
判断指定的字符串是否是一个有效的密码,或者与确认密码进行比较。密码比较区分大小写。
语法
$$.util.is.password(s, [cmp], [max])
-
s
要判断的字符串。
-
cmp
要比较的字符串,通常是确认密码。
-
max
密码字符串的最大长度,如果没有提供,则默认为 30。
-
返回值
如果 s 是一个有效的密码,返回 true,否则返回 false。
-
-
$$.util.is.verifyingCode()
判断指定的字符串是否是一个有效的验证码:长度为 6 的字母或数字的组合。
语法
$$.util.is.verifyingCode(s)
-
s
要判断的字符串。
-
返回值
如果 s 是一个有效的验证码,返回 true,否则返回 false。
-
-
$$.util.is.datetime()
判断指定的字符串是否是一个有效的日期时间值,并且介于指定的日期时间范围内。
语法
$$.util.is.datetime(v, [min], [max])
-
v
一个 Date 或 String 的日期时间值。
-
min
最小日期时间值。默认为 1970-01-01。
-
max
最大日期时间值。默认为 9999-12-31 23:59:59。
-
返回值
如果 v 是一个有效的日期时间值,返回 true,否则返回 false。
-
-
$$.util.is.int()
判断指定的字符串是否是一个有效的 32 位整数,并且介于指定的范围内。
语法
$$.util.is.int(v, [min], [max])
-
v
一个 Number 或 String 的整数值。
-
min
最小整数值。默认为 -2147483648。
-
max
最大整数值。默认为 2147483647。
-
返回值
如果 v 是一个有效的 32 位整数值,返回 true,否则返回 false。
-
-
$$.util.is.long()
-
$$.util.is.float()
判断指定的字符串是否是一个有效的浮点数,并且介于指定的范围内。
语法
$$.util.is.float(v, [min], [max])
-
v
一个 Number 或 String 的浮点数值。
-
min
最小值。默认为 Number.NEGATIVE_INFINITY。
-
max
最大值。默认为 Number.POSITIVE_INFINITY。
-
返回值
如果 v 是一个有效的浮点数值,返回 true,否则返回 false。
-
-
$$.util.is.bool()
判断指定的字符串是否是一个有效的布尔值。
语法
$$.util.is.bool(v)
-
v
要判断的 Boolean 或 String 值。如果是字符串,true、false、t、f、yes、no、y、n、on、off、1、0 都会被看作布尔值,并返回 true。
-
返回值
如果 v 是一个有效的布尔值,返回 true,否则返回 false。
-
-
$$.util.is.orderDirection()
判断指定的字符串是否 为 'asc' 或 'desc',不区分大小写。
语法
$$.util.is.orderDirection(s)
-
s
要判断的字符串。
-
返回值
如果 s 为 'asc' 或 'desc',返回 true,否则返回 false。
-
-
-
$$.ui
提供一组与 UI 相关的辅助函数,用于显示消息对话框、进度指示以及确认对话框。
-
$$.ui.msg
显示消息窗口和指定的消息。这是一个只能写入的属性。
语法
$$.ui.msg = text
-
text
要显示的文本消息,如果是
null
、undefined
或空字符串,则隐藏消息窗口。特殊的,如果设置为 '...',则显示加载动画。
示例
-
-
$$.ui.alert()
显示消息窗口和指定的消息。是
$$.ui.msg
的函数形式。与
window.alert()
不同,$$.ui.alert()
不会阻塞用户界面。语法
$$.ui.alert(text)
-
text
要显示的文本消息,如果是
null
、undefined
或空字符串,则隐藏消息窗口。特殊的,如果设置为 '...',则显示加载动画。
-
-
$$.ui.confirm()
显示一个确认对话框和指定的确认消息,并在用户点击确定后指定的函数。
与
window.confirm()
不同,$$.ui.confirm()
不会阻塞用户界面。语法
$$.ui.confirm(title, msg, ok, [cancel])
-
title
确认对话框的标题。
-
msg
确认消息。
-
ok
一个 Function,表示用户点击确定后要执行的函数。
-
cancel
一个 Function,表示用户点击取消后要执行的函数。
示例
-
-
-
$$.web
提供与访问应用服务相关的功能方法。包括使用 AJAX 和 Web Socket 执行功能请求以及通过 Web Socket 上传文件的封装。
-
$$.api()
使用指定的选项创建一个 Function 对象,该 Function 对象接下来可以用于执行远程服务器请求。
$$.api()
函数本身不会实际执行服务请求。语法
$$.api(base)
-
base
一个对象或一个函数。如果是一个对象,表示预定义的基础请求参数。该对象的结构如下:
如果是一个函数,则该函数应该返回具有以上结构的一个对象。
-
url
必须提供。
一个字符串或返回字符串的函数,表示请求的服务路径。可以以 ~/ 作为前缀,此时 ~/ 会被替换为
$$.web.appPath
。当为函数时,该函数接受
args
参数值。 -
method
一个字符串或一个事件处理程序,表示请求方法,取值下列字符串之一:
-
POST
通过 AJAX 执行功能请求,这是默认的请求方法。AJAX 不支持通过 GET 方法执行请求。
-
WEBSOCKET | WS
通过 Web Socket 执行功能请求。此时通过
progress
可以获取操作进度。 -
UPLOAD
通过 Web Socket 上传文件。此时通过
progress
可以获取上传进度。 -
UPLOAD-POST | UPOST
首先通过 Web Socket 上传文件,然后通过 AJAX 执行功能请求。文件上传后,会通过
data
向 AJAX 功能请求传递已经上传文件的虚拟路径。 -
UPLOAD-WS | UWS
首先通过 Web Socket 上传文件,然后通过 Web Socket 执行功能请求。文件上传后,会通过
data
向 Web Socket 功能请求传递已经上传文件的虚拟路径。
如果是一个事件处理程序,需要在事件中通过
event.method
设置请求方法。在事件处理程序中可以通过
event.args
获取args
参数值。 -
-
args
一个事件处理程序。通过
event.args
设置一个任意值,表示传递给url
、method
、data
、before
、validate
、success
、load
、error
等函数或事件处理程序的参数。 -
files
一个事件处理程序。通过
event.files
设置要上传的文件列表,通常是一个<input type="file" />
选择的文件列表。在事件处理程序中可以通过
event.args
获取args
参数值。 -
data
一个事件处理程序。通过
event.data
设置要发送给服务器的数据。在事件处理程序中可以通过
event.args
获取args
参数值。如果是上传文件后执行功能请求,则可以通过event.files
获取已经上传文件的信息。event.files
是一个数组,数组中每一个元素具有如下的结构:{ name: String, // 文件名称,包括扩展名称 size: Number, // 文件大小,单位:字节 url: String, // 文件的虚拟路径 type: String // 文件的 MIME 类型 }
-
validate
一个事件处理程序,用于对
args
进行验证(不是对data
进行验证)。通过event.message
设置验证失败时要传递给error
事件的消息。如果验证失败,应该设置为空字符串。 -
before
一个事件处理程序。在提交服务器请求前会触发
before
事件,通过event.cancel
设置为true
可以取消提交请求,此时不会触发success
事件,但是会触发load
事件。可以通过该事件在更新数据前检查数据是否实际发生改变,如果没有改变可以不用提交到服务器,以减少服务器的负担。
也可以在该事件中通过
$$.ui.msg = '...';
显示 loading 动画。不要在
before
中通过$$.ui.confirm()
对删除等操作进行确认操作,因为$$.ui.confirm()
不会阻塞代码的执行。 -
success
一个事件处理程序。在请求成功后触发
success
事件。通过event.args
可以获得args
参数值,通过event.result
可以获取从服务器返回的结果数据。通常使用该事件将返回的结果数据绑定到页面上。
-
progress
一个事件处理程序。在通过 Web Socket 执行请求或上传文件时会触发
progress
事件。通过event.args
可以获得args
参数值,通过event.progress
获取当前操作的进度百分比。 -
load
一个事件处理程序。在
success
之后,或者在before
中取消请求之后都会触发load
事件。通过event.args
可以获得args
参数值。如果请求是用户点击对话框确定按钮提交的,那么无论是否在
before
中取消了请求,都应该将对话框关闭,可以在该事件中关闭对话框。如果
before
事件中显示了 loading 动画,可以通过此事件隐藏 loading 动画。 -
error
一个事件处理程序。请求过程中发生错误都会触发
error
事件。通过event.args
可以获得args
参数值,通过event.message
获取错误消息。
在使用
$$.api()
创建一个新的请求对象时,可以仅仅提供base.url
,其他参数或事件处理程序可以延后通过事件注册的方式提供。 -
-
返回值
一个 Function 对象,未来可以为此对象添加事件处理程序,通过调用此函数执行远程服务请求。返回的 Function 对象上存在以下几个与事件相关的函数:
-
on(eventType, handler)
用于向请求对象注册一个事件处理程序。
-
one(eventType, handler)
用于向请求对象注册一个一次性的事件处理程序。
-
off(eventType, handler)
移除一个指定的事件处理程序。
-
trigger(eventType)
触发一个事件。
以上
eventType
可以是method
、args
、files
、data
、validate
、before
、success
、progress
、load
、error
之一。 -
示例
-
-
$$.web.initAppPath()
初始化当前系统的应用路径的根路径,并将根路径保存在 localStorage 中。在 API 请求路径中,使用前缀 ~/ 表示应用路径的根,如果没有正确配置此根路径,可能会导致请求发生 404 错误。
默认的,如果没有执行此函数,则应用路径的根路径为 '/',表示系统部署在目标应用服务的主目录下。
initAppPath()
没有参数,在内部将当前页面路径的根保存在 localStorage 中。因此,通常应该在站点根目录下的页面中调用此函数,比如 index.html 或 index.js。这样的页面应该在进入系统时首先被访问到。语法
$$.web.initAppPath()
-
$$.web.appPath
获取此前已经初始化的应用路径的根路径,如果此前未曾初始化,则返回 ''。这是一个只读属性。
如果定义了
window.__APP_PATH
,则优先返回window.__APP_PATH
。语法
$$.web.appPath
-
$$.web.url()
获取指定路径的完整路径,将指定路径的 '~/' 前缀替换为当前应用路径的根路径。
此函数使用此前通过
initAppPath()
初始化的应用路径的根路径替换 '~/'。语法
$$.web.url(url)
-
url
包含了 '~/' 前缀的路径。如果没有包含 '~/' 前缀,则不做任何转换。
-
返回值
使用
appPath
替换了 '~/' 前缀的路径。
示例
-
-
$$.web.ajax()
使用 POST AJAX 方法执行远程服务请求。
-
$$.web.ws()
使用 Web Socket 执行远程服务请求。
-
$$.web.upload()
使用 Web Socket 上传文件。
-
-
$$.user
提供用户登录、注销以及获取用户信息的功能支持。
-
$$.user.current
获取当前已经登录的用户的用户信息。如果用户尚未登录,则返回
null
。这是一个只读属性。语法
$$.user.current
示例
-
$$.user.load()
从服务器加载当前用户的信息,加载成功后执行通过 $$(...) 注册的处理程序。
语法
$$.user.load([refresh])
-
refresh
可选的一个布尔值,
true
表示总是从服务器加载,false
表示如果此前已经加载过,则返回已经加载的信息。默认为false
。 -
返回值
一个对象,表示当前用户的用户信息。
示例
-
-
$$.user.login()
使用指定的用户名和密码登录系统,登录成功后返回用户信息,将用户令牌保存在 localStorage 中,并执行通过 $$(...) 注册的处理程序。
如果此前有其他用户已经登录,则会删除已登录用户的令牌。
语法
$$.user.login(name, password, [ok], [error])
-
name
用户的登录名称。
-
password
用户的登录密码。
-
ok
用户登录成功后要执行的函数。
-
error
用户登录失败时要执行的函数。
-
-
$$.user.logout()
注销当前已经登录的用户,移除用户令牌。
语法
$$.user.logout([done])
-
done
退出登录后要执行的函数。
-
-
$$.user.goHome()
将用户重定向到站点的首页。
语法
$$.user.goHome()
-
-
$$.com
$$.com
是所有应用的根命名空间。比如对于由沃恩提供的组织与用户应用中的用户管理模块,在$$.com
中的路径如下:-
$$.com.waln.authority
这是模块所在应用的命名空间。
-
$$.com.waln.authority.users
这是模块的命名空间。
-
$$.com.waln.authority.users.api
这是模块中定义应用服务请求方法的命名空间,在 _api.js 和功能的 .js 文件中通常使用局部变量
_api
引用。 -
$$.com.waln.authority.users.ui
这是模块中 UI 相关方法的命名空间,在功能的 .js 文件中通常使用局部变量
_ui
引用。
-
$$.namespace()
查找指定模块路径的模块的命名空间,如果模块命名空间不存在,则为目标路径创建新的命名空间。
语法
$$.namespace(path)
-
path
格式为 “
{开发者代码}.{应用标识符}.{模块标识符}
” 的字符串,表示模块的路径。 -
返回值
一个对象,表示目标模块的命名空间。
示例
-
-
-