help_outline

pittypat.js 参考

print
  1. pittypat.js 参考

    pittypat.js 除了自身的基础 JS API 外,还集成了 long.js,此文件可以用于处理 64 位整数。

    1. 命名空间

      Pittypat 的根命名空间为 window.pittypat,为了方便,使用 $$ 表示该命名空间。在根命名空间之下,包括如下的几个子命名空间:

      命名空间 描述
      $$.util 提供一组辅助的方法,包括字符串、日期时间、数组、UUID 等的比较、格式化、类型判断、base64、字符串解压缩等方法。
      $$.ui 提供与 UI 相关的一组方法,包括消息提示框和确认对话框相关的方法。
      $$.web 提供客户端通过 AJAX 和 WebSocket 访问服务器的基础支持方法。
      $$.user 提供与当前用户相关的方法,包括登录、注销、用户信息查询等相关的方法。
      $$.com 开发者和应用命名空间的根。
    2. 基础扩展

      提供对 ArrayDateMathNumberObjectString 以及 jQuery 的一组扩展方法,包括提供一些扩展方法,以及对一些基本方法的 Polyfill,以弥补不同浏览器之间的差异。

      1. Array.prototype.copyWithin()

        浅复制数组的一部分(从 startend - 1)到同一数组中的另一个位置(target),不改变数组的尺寸,但是可能会改变数组的内容。

        语法

        array.copyWithin(target, [start], [end])
        • target

          从 0 开始的目标位置,元素将被复制到此位置。

        • start

          从 0 开始的要复制元素的起始位置。如果没有提供,则从 0 开始复制。

        • end

          从 0 开始的要复制元素的截止位置,但是不复制此位置的元素。如果没有提供,则复制到 array.length

        • 返回值

          改变了内容后的数组。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Array.prototype.copyWithin()(MDN)。

      2. Array.prototype.each()

        遍历数组,对数组中的每一个元素执行一个函数,等价于 Array.prototype.forEach

        语法

        array.each(fn(element, [index], [array]))
        • fn

          在数组每一项上执行的函数,接收 3 个参数。

          • element

            当前遍历到的元素。

          • index

            从 0 开始的当前遍历到的索引位置。

          • array

            数组本身。

        描述

        参见 Array.prototype.forEach()(MDN)。

        示例

      3. Array.prototype.fill()

        使用一个值(value)填充数组中指定范围内(从 startend - 1)的数组项。

        语法

        array.fill(value, [start], [end])
        • value

          用来填充数组的值。

        • start

          从 0 开始的填充起始位置。如果没有提供,则从 0 开始。

        • end

          从 0 开始的填充截止位置,不包括此位置。如果没有提供,则为 array.length

        • 返回值

          改变了内容后的数组。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Array.prototype.fill()(MDN)。

      4. Array.prototype.find()

        返回数组中满足指定测试函数的第一个元素。如果没有找到,则返回 undefined

        语法

        array.find(where(element, [index], [array]))
        • where

          在数组每一项上执行的测试函数,接收 3 个参数,并返回一个布尔值。

          • element

            当前遍历到的元素。

          • index

            从 0 开始的当前遍历到的索引位置。

          • array

            数组本身。

        • 返回值

          复合指定条件的第一个元素,如果没有找到,则返回 undefined

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Array.prototype.find()(MDN)。

        示例

      5. Array.prototype.findIndex()

        返回数组中满足指定测试函数的第一个元素的位置。否则返回 -1。

        语法

        array.findIndex(where(element, [index], [array]))
        • where

          在数组每一项上执行的测试函数,接收 3 个参数,并返回一个布尔值。

          • element

            当前遍历到的元素。

          • index

            从 0 开始的当前遍历到的索引位置。

          • array

            数组本身。

        • 返回值

          从 0 开始的复合指定条件的第一个元素的位置,如果没有找到,则返回 -1。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Array.prototype.findIndex()(MDN)。

        示例

      6. Array.prototype.includes()

        判断数组中是否包含指定的值。

        语法

        array.includes(value, [start])
        • value

          要从数组中查找的值。

        • start

          从 0 开始的查找起始位置,如果没有提供,则默认为 0。

        • 返回值

          表示值是否存在的一个布尔值。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Array.prototype.includes()(MDN)。

        示例

      7. Array.prototype.max()

        返回数组中的最大值,相当于 Math.max.apply(null, array)

        语法

        array.max()
        • 返回值

          数组中的最大值。

        描述

        这是 Pittypat 扩展的一个函数。

        示例

      8. Array.prototype.min()

        返回数组中的最小值,相当于 Math.min.apply(null, array)

        语法

        array.min()
        • 返回值

          数组中的最小值。

        描述

        这是 Pittypat 扩展的一个函数。

        示例

      9. Date.prototype.addDays()

        在指定的日期上加上指定的天数,并返回一个新的日期,不改变原来的日期。

        语法

        date.addDays(days)
        • days

          一个整数,表示要添加的天数,可以小于 0。

        • 返回值

          date 加上 days 后的新的日期。

        描述

        这是 Pittypat 扩展的一个函数。

        如果需要按工作日计算,请考虑使用基础应用 calendar 中的 ~/com/waln/calendar/calc/add 服务 API。

        示例

      10. Date.prototype.format()

        返回日期时间值的格式化后的字符串。

        语法

        date.format([precision], [sp], [sundayFirst])
        • precision

          一个字符串,表示格式化精度,取如下值之一:yearmonthweekdayhourminutesecond。如果没有提供,默认为 second

        • sp

          一个字符串,表示日期年月日之间的分隔符,小时、分钟和秒之间的分隔符总是使用 :。如果没有提供,默认为 /

        • sundayFirst

          一个布尔值,指示星期日是否是一周的第一天。如果没有提供,默认为 false,此时一周的第一天是周一。

        • 返回值

          一个字符串,表示可用于显示的日期时间值的格式化字符串。根据 precision 的不同,返回结果不同:

          • year

            格式为 yyyy 的四位年份的字符串。此时 spsundayFirst 不起作用。

          • 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 扩展的一个函数。

        示例

      11. Date.prototype.getExactMonth()

        返回从 1 到 12 的月份值,相当于 getMonth() + 1

        语法

        date.getExactMonth()
        • 返回值

          一个整数,从 1 到 12 的月份值。

        描述

        这是 Pittypat 扩展的一个函数。

        示例

      12. Date.prototype.getFullMonth()

        返回格式为 yyyymm 的一个整数,yyyy 表示年份,mm 表示月份(01~12)。

        语法

        date.getFullMonth()
        • 返回值

          一个包含了年份和月份的整数。

        描述

        这是 Pittypat 扩展的一个函数。

        示例

      13. Date.prototype.getFullWeek()

        返回格式为 yyyyww 的一个整数,yyyy 表示年份,ww 表示周数(01~53)。相当于 getWeek(true, sundayFirst)

        语法

        date.getFullWeek([sundayFirst])
        • sundayFirst

          一个布尔值,指示星期日是否是一周的第一天。如果没有提供,默认为 false,此时一周的第一天是周一。

        • 返回值

          一个包含了年份和周数的整数。

        描述

        这是 Pittypat 扩展的一个函数。

        示例

      14. Date.prototype.getWeek()

        返回日期在目标年份中的周数(1-53)。

        语法

        date.getWeek([fullWeek], [sundayFirst])
        • fullWeek

          一个布尔值,true 表示返回格式为 yyyyww 的值,yyyy 表示年份,ww 表示从 01~53 的周数。false 仅仅返回周数。如果没有提供,默认为 false

        • sundayFirst

          一个布尔值,指示星期日是否是一周的第一天。如果没有提供,默认为 false,此时一周的第一天是周一。

        • 返回值

          一个包含了年份和周数的整数,或者仅仅是周数的整数。

        描述

        这是 Pittypat 扩展的一个函数。

        示例

      15. Date.prototype.weekDates()

        返回日期所在周的第一天和最后一天。

        语法

        date.weekDates([sundayFirst])
        • sundayFirst

          一个布尔值,指示星期日是否是一周的第一天。如果没有提供,默认为 false,此时一周的第一天是周一。

        • 返回值

          一个有两个日期时间值元素的数组,数组第一个元素是第一天,第二个元素是最后一天。

        描述

        这是 Pittypat 扩展的一个函数。

        示例

      16. Math.log10()

        计算以 10 为底的对数。

        语法

        Math.log10(num)
        • num

          一个数字值。

        • 返回值

          num 以 10 为底的对数。如果 num 小于 0, 则返回 NaN。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Math.log10()(MDN)。

      17. Math.log2()

        计算以 2 为底的对数。

        语法

        Math.log2(num)
        • num

          一个数字值。

        • 返回值

          num 以 2 为底的对数。如果 num 小于 0, 则返回 NaN。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Math.log2()(MDN)。

      18. Math.trunc()

        去掉数字的小数部分,只保留整数部分。

        语法

        Math.trunc(num)
        • num

          一个数字值。

        • 返回值

          num 的整数部分。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Math.trunc()(MDN)。

        示例

      19. Number.isNaN()

        判断一个数字值是否是 NaN

        语法

        Number.isNaN(num)
        • num

          一个数字值。如果不是数字,则返回 false

        • 返回值

          num 是一个数字,并且为 NaN 时返回 true,其他情况返回 false

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Number.isNaN()(MDN)。

        示例

      20. Number.MAX_SAFE_INTEGER

        一个常量数字值,表示在 JS 中的最大安全整数,其值为 9007199254740991253 - 1)。安全的意思是指能够准确地表示整数,并能正确地比较整数。

        语法

        Number.MAX_SAFE_INTEGER

        描述

        只有当前 JS 没有提供此常量时,才会扩展该函数。参见 Number.MAX_SAFE_INTEGER(MDN)。

      21. Number.MIN_SAFE_INTEGER

        一个常量数字值,表示在 JS 中的最小安全整数,其值为 -9007199254740991-(253 - 1))。安全的意思是指能够准确地表示整数,并能正确地比较整数。

        语法

        Number.MIN_SAFE_INTEGER

        描述

        只有当前 JS 没有提供此常量时,才会扩展该函数。参见 Number.MIN_SAFE_INTEGER(MDN)。

      22. Number.isSafeInteger()

        判断一个数字值是否是安全的整数。安全的意思是指能够准确地表示整数,并能正确地比较整数。

        语法

        Number.isSafeInteger(num)
        • num

          一个数字值。如果不是数字,则返回 false

        • 返回值

          num 是一个数字,并且介于 MIN_SAFE_INTEGERMAX_SAFE_INTEGER 之间,则返回 true,否则返回 false

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Number.isSafeInteger()(MDN)。

        32 位整数一定是安全的整数,但是 64 位整数则不一定是安全的整数。正是因为这个原因,pittypat 在将 64 位整数转换为 JSON 发送到客户端时,总是将 64 位整数转换为字符串形式,而不是数字形式。为了方便地处理 64 位整数,pittypat.js 文件中集成了 long.js,用于处理 64 位字符串格式的整数。

        示例

      23. Object.assign()

        将源对象中所有可枚举属性的值复制到目标对象。

        语法

        Object.assign(target, ...sources)
        • target

          目标对象。

        • sources

          一个或多个源对象。

        • 返回值

          目标对象。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 Object.assign()(MDN)。

        示例

      24. String.prototype.charPointAt()

        返回字符串中指定位置的 Unicode 非负整数编码值。

        语法

        str.charPointAt(pos)
        • pos

          从 0 开始的位置。

        • 返回值

          一个非负整数。如果指定位置上没有找到元素,则返回 undefined

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 String.prototype.charPointAt()(MDN)。

        示例

      25. String.fromCodePoint()

        返回由指定 Unicode 编码序列创建的字符串。

        语法

        String.fromCodePoint(num1, [...numN])
        • num1, [...numN]

          一个或多个 Unicode 编码值。如果传入无效的编码值,则会产生 RangeError 异常。

        • 返回值

          一个从指定编码序列创建的字符串。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 String.fromCodePoint()(MDN)。

        示例

      26. String.prototype.endsWith()

        检查指定的字符串是否以另一个字符串结尾。

        语法

        str.endsWith(searchString, [end])
        • searchString

          要搜索的字符串。

        • end

          在 str 中搜索 searchString 的结束位置,默认为 str.length

        • 返回值

          一个布尔值,指示 str 是否以 searchString 结尾。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 String.prototype.endsWith()(MDN)。

      27. String.prototype.includes()

        检查指定的字符串中是否包含另一个字符串。

        语法

        str.includes(searchString, [start])
        • searchString

          要搜索的字符串。

        • start

          在 str 中搜索 searchString 的起始位置,默认为 0

        • 返回值

          一个布尔值,指示 str 是否包含 searchString

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 String.prototype.includes()(MDN)。

      28. String.prototype.left()

        返回指定字符串左边指定长度的子字符串。

        语法

        str.left(len)
        • len

          子字符串的长度。如果大于或等于 str.length,则返回完整的 str

        • 返回值

          一个最大长度为 len 字符串,该字符串是从 str 左侧截取的字符串。

        描述

        这是 Pittypat 扩展的一个函数。

        示例

      29. String.prototype.padEnd()

        检查指定的字符串是否达到指定长度,如果没有达到指定长度,则使用另一个字符串在末尾进行填充,直至达到指定长度。

        语法

        str.padEnd(len, [padString])
        • len

          要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。

        • padString

          填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。默认为 " "(空格)。

        • 返回值

          在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 String.prototype.padEnd()(MDN)。

        示例

      30. String.prototype.padLeft()

        检查指定的字符串是否达到指定长度,如果没有达到指定长度,则使用另一个字符串在开始进行填充,直至达到指定长度。

        语法

        str.padLeft(len, padString)
        str.padLeft(padString, len)
        • len

          要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。

        • padString

          填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。默认为 " "(空格)。

        • 返回值

          在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。

        描述

        这是 Pittypat 扩展的一个函数,与 padStart 等价,只是两个参数的位置可以互换。

      31. String.prototype.padRight()

        检查指定的字符串是否达到指定长度,如果没有达到指定长度,则使用另一个字符串在末尾进行填充,直至达到指定长度。

        语法

        str.padRight(len, padString)
        str.padRight(padString, len)
        • len

          要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。

        • padString

          填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。默认为 " "(空格)。

        • 返回值

          在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。

        描述

        这是 Pittypat 扩展的一个函数,与 padEnd 等价,只是两个参数的位置可以互换。

      32. String.prototype.padStart()

        检查指定的字符串是否达到指定长度,如果没有达到指定长度,则使用另一个字符串在开始进行填充,直至达到指定长度。

        语法

        str.padStart(len, [padString])
        • len

          要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。

        • padString

          填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。默认为 " "(空格)。

        • 返回值

          在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 String.prototype.padStart()(MDN)。

        示例

      33. String.prototype.repeat()

        通过将指定字符串重复指定次数的方式创建一个新字符串。

        语法

        str.repeat(n)
        • n

          要重复的次数。小于 0 将产生错误,等于 0 则返回空字符串。

        • 返回值

          str 重复 n 次后创建的新字符串。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 String.prototype.repeat()(MDN)。

        示例

      34. String.prototype.replaceAll()

        使用新的子字符串替换指定字符串中的所有匹配的子字符串。返回新字符串,不改变原始字符串。

        语法

        str.replaceAll(oldStr, newStr)
        • oldStr

          要被替换的原始子字符串,可以是正则表达式或字符串。

        • newStr

          要替换的新子字符串,可以是字符串或一个每次替换都执行的函数。

        • 返回值

          替换后的新字符串。

        描述

        这是 Pittypat 扩展的一个函数。相当于 replace(new RegExp(oldStr, 'g'), newStr)。参见 String.prototype.replace()(MDN)。

      35. String.prototype.right()

        返回指定字符串右边指定长度的子字符串。

        语法

        str.right(len)
        • len

          子字符串的长度。如果大于或等于 str.length,则返回完整的 str

        • 返回值

          一个最大长度为 len 字符串,该字符串是从 str 右侧截取的字符串。

        描述

        这是 Pittypat 扩展的一个函数。

        示例

      36. String.prototype.startsWith()

        检查指定的字符串是否以另一个字符串开始。

        语法

        str.startsWith(searchString, [start])
        • searchString

          要搜索的字符串。

        • start

          在 str 中搜索 searchString 的开始位置,默认为 0

        • 返回值

          一个布尔值,指示 str 是否以 searchString 开始。

        描述

        只有当前 JS 没有提供此函数时,才会扩展该函数。参见 String.prototype.startsWith()(MDN)。

      37. String.prototype.trim()

        从指定字符串中移除指定位置的空白字符。不改变原始字符串。

        语法

        str.trim([mode])
        • mode

          一个不区分大小写的字符串,表示去除方式。可以取值如下:

          • start | begin

            去除开始位置的空白字符。

          • end

            去除结束位置的空白字符。

          • all

            去除所有空白字符。

          • 其他或不提供

            去除开始和结束位置的空白字符。

        • 返回值

          一个去除了指定位置空白字符的新字符串。

        描述

        这是 Pittypat 扩展的一个函数。

        示例

      38. jQuery.fn.caret()

        获取(没有提供任何参数时)或者设置(提供了至少一个参数时)文本框中光标(选中)的位置。

        语法

        $(selector).caret([start], [end])
        • start

          可选。字符串或数字。字符串取值 'start''end',表示文本框中当前文本的起始位置(0)和结束位置(字符串长度)。如果是数字,表示从 0 开始的位置。如果超过字符串长度,则使用字符串长度。

        • end

          可选。字符串或数字。字符串取值 'start''end',表示文本框中当前文本的起始位置(0)和结束位置(字符串长度)。如果是数字,表示从 0 开始的位置。如果超过字符串长度,则使用字符串长度。

        描述

        jQuery 并没有提供获取或者设置文本框光标或选中文本的方法,而光标位置在很多时候对于提升用户体验非常重要。这是 Pittypat 对 jQuery 的扩展。

        示例

      39. jQuery.fn.multiline()

        设置指定元素的内部多行文本。

        语法

        $(selector).multiline(text)
        • text

          使用 \r\n\r\n 分隔的多行文本。

        描述

        类似于 jQuery 的 $(selector).text(),不同的是 text 无法对文本进行换行显示。multiline 会首先使用 \r\n\r\n 切割文本为一个字符串数组,每一个数组元素使用一个 span 封装,不同 span 之间添加 <br /> 来换行显示。

        示例

      40. jQuery.fn.tv()

        获取或者设置元素的值或文本。

        语法

        $(selector).tv([value|text])
        • value|text

          要设置的值或文本。如果没有提供参数,则获取元素的值或文本。

        描述

        如果目标元素是文本框、日期时间输入框、数字输入框、复选框、单选框等具有 value 值的元素,相当于 jQuery.fn.val()。对于其他元素,比如 spanpdiv 等元素,相当于 jQuery.fn.text()

        示例

      41. jQuery.fn.mdcInit()

        jQuery 集合中的每一个对象作为 MDC 上下文初始化 Material Design Component。

        语法

        $(selector).mdcInit()

        描述

        初始化jQuery 集合中每一个元素内的 MDC 组件。

        示例

    3. $$

      window.pittypat 的根命名空间。作为一个函数可以注册登录用户或匿名用户的处理程序。

      1. $$

        window.pittypat 的根命名空间,$$window.pittypat 的别名。

        示例

      2. $$(options|function, [more])

        当 $$ 作为一个函数时,此函数用于向服务器查询当前已经登录用户的用户信息,并根据返回的用户信息执行不同的操作。

        参数 more 是一个可选参数,类型为 Boolean,表示是否还需要添加更多的用户信息处理程序。默认为 false。如果该参数为 true,表示仅仅注册 initauthorizedanonymous 处理程序,并不实际向服务器查询用户信息。

        如果 $$ 参数是一个对象,则对象 options 的定义如下:

        {
            data: {Any},
            init: {Function},
            authorized: {Function},
            anonymous: {Function}
        }
        
        • data

          传递给 initauthorizedanonymous 的数据,可以是任何类型的数据或函数。如果是一个函数,则执行该函数,并将函数返回结果传递给 initauthorizedanonymous。当 data 为函数时,该函数的参数是一个对象,结构如下:

          {
              user: {Object},
              app: {Object},
              mod: {Object},
              init: {Boolean},
              first: {Boolean}
          }
          
          • user

            只读属性。表示当前用户的用户信息,如果是匿名用户,则为 null

          • app

            只读属性。表示当前应用的命名空间,如果无法定位,则为 null

          • mod

            只读属性。表示当前模块的命名空间,如果无法定位,则为 null

          • init

            只读属性。表示是否正在初始化页面。

          • first

            只读属性。表示是否首次执行 authorizedanonymous

        • init

          在首次执行 authorizedanonymous 前执行的函数,此函数整个页面只会执行一次。如果没有提供该函数,则什么都不做,也就是没有默认行为。

          此函数的参数为一个对象,结构定义如下:

          {
              user: {Object},
              app: {Object},
              mod: {Object},
              init: {Boolean},
              first: {Boolean},
              data: {Any}
          }
          
          • user

            只读属性。表示当前用户的用户信息,如果是匿名用户,则为 null

          • app

            只读属性。表示当前应用的命名空间,如果无法定位,则为 null

          • mod

            只读属性。表示当前模块的命名空间,如果无法定位,则为 null

          • init

            只读属性。表示是否正在初始化页面,总是为 true

          • first

            只读属性。表示是否接下来首次执行 authorizedanonymous

          • 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.authorizedoptions 的其他属性不提供或使用默认值。

        示例

        以下两种方式是等价的。

      3. $$.val()

        语法

        $$.val(v, [args], [_this])
        • v

          一个值,或一个函数。如果 v 不是一个函数,则 $$.val() 直接返回 v。如果 v 是一个函数,则使用 args 作为函数参数执行函数,并将返回值作为 $$.val() 的返回值。

        • args

          v 是一个函数时,传递给 v 的参数。可以是任何值。

        • _this

          v 是一个函数时,在函数 v 内部的 this 值。

        示例

    4. $$.util

      提供一组辅助函数,包括格式化、日期时间、字符串、字节数组、数字、UUID、数组等相关的函数。

      1. $$.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

          一个字符串,表示年月日之间的分隔符。如果没有提供,则默认使用 /

        • 返回值

          一个日期时间字符串。

        示例

      2. $$.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

          一个字符串,表示年月日之间的分隔符。如果没有提供,则默认使用 /

        • 返回值

          一个日期时间字符串。

        示例

      3. $$.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

          一个字符串,表示年月日之间的分隔符。如果没有提供,则默认使用 /

        • 返回值

          一个日期时间字符串。

        示例

      4. $$.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

          一个字符串,表示年月日之间的分隔符。如果没有提供,则默认使用 /

        • 返回值

          一个日期时间字符串。

        示例

      5. $$.util.fmt.timeSecond()

        将一个日期时间值的时间部分格式化为字符串,时分秒之间总是使用 : 分隔。

        语法

        $$.util.fmt.timeSecond(datetime)
        • datetime

          一个 Date 对象,或者一个从服务器返回的 JSON 格式的日期时间对象。JSON 结构如下:

          {
              year: 2018,
              month: 1,
              day: 12,
              hour: 22,
              minute: 35,
              second: 18
          }
        • 返回值

          一个日期时间字符串。

        示例

      6. $$.util.fmt.timeMinute()

        将一个日期时间值的时间部分格式化为字符串,时分之间总是使用 : 分隔。

        语法

        $$.util.fmt.timeMinute(datetime)
        • datetime

          一个 Date 对象,或者一个从服务器返回的 JSON 格式的日期时间对象。JSON 结构如下:

          {
              year: 2018,
              month: 1,
              day: 12,
              hour: 22,
              minute: 35,
              second: 18
          }
        • 返回值

          一个日期时间字符串。

        示例

      7. $$.util.time.from()

        将一个从服务器返回的 JSON 格式的日期时间对象转换为 Date

        语法

        $$.util.time.from(o)
        • o

          从服务器返回的 JSON 格式的日期时间对象,结构如下:

          {
              year: 2018,
              month: 1,
              day: 12,
              hour: 22,
              minute: 35,
              second: 18
          }
        • 返回值

          一个 Date 值。

      8. $$.util.time.to()

        将一个 Date 值转换为 JSON 格式的日期时间对象。

        语法

        $$.util.time.to(datetime)
        • datetime

          一个 Date 值。

        • 返回值

          JSON 格式的日期时间对象,结构如下:

          {
              year: 2018,
              month: 1,
              day: 12,
              hour: 22,
              minute: 35,
              second: 18
          }
      9. $$.util.time.now()

        返回表示当前时间的 Date 值,相当于 new Date()

        语法

        $$.util.time.now()
        • 返回值

          一个表示当前日期时间的 Date 值。

      10. $$.util.time.name()

        返回指定日期时间的名称。

        语法

        $$.util.time.name(datetime, [precision])
        • datetime

          一个 Date 值,或者 JSON 格式的日期时间对象,结构如下:

          {
              year: 2018,
              month: 1,
              day: 12,
              hour: 22,
              minute: 35,
              second: 18
          }
        • precision

          一个不区分大小写的字符串,表示返回的时间名称的精度,取值 hms 之一,分别表示精确到小时、分钟和秒。默认为 m

        • 返回值

          一个表示当前日期时间的 Date 值。

        示例

      11. $$.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。

        示例

      12. $$.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。

        示例

      13. $$.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 值。

      14. $$.util.date.to()

        将一个 Date 值转换为 JSON 格式的日期时间对象,忽略时间部分。

        语法

        $$.util.date.to(datetime)
        • datetime

          一个 Date 值。

        • 返回值

          JSON 格式的日期时间对象,结构如下:

          {
              year: 2018,
              month: 1,
              day: 12
          }
      15. $$.util.date.today()

        返回表示当前日期的 Date 值。

        语法

        $$.util.date.today()
        • 返回值

          一个表示当前日期的 Date 值,时间部分为 0。

      16. $$.util.date.isLeapYear()

        判断指定年份是否是闰年。

        语法

        $$.util.date.isLeapYear(year)
        • year

          一个年份值。

        • 返回值

          如果目标年份是闰年,则返回 true,否则返回 false

      17. $$.util.date.daysInMonth()

        返回指定年份中指定月份的天数。

        语法

        $$.util.date.daysInMonth(year, month)
        • year

          一个年份值。

        • month

          一个月份值,从 1 ~ 12。

        • 返回值

          一个数字值,表示指定月份中的总天数。

      18. $$.util.date.weekDates()

        返回指定序号的周的第一天和最后一天对应的日期。

        语法

        $$.util.date.weekDates(yw, [sundayFirst])
        • yw

          一个数字值,格式为 yyyyww,其中 yyyy 表示年份,ww 表示从 01 ~ 53 的周序号。

        • sundayFirst

          一个布尔值,true 表示一周第一天为星期日,false 表示一周第一天为星期一。默认为 false

        • 返回值

          一个对象,结构如下:

          {
              firstDay: {Date},
              lastDay: {Date}
          }

        示例

        由于时区的原因,在控制台中输出时可能会有所偏差。

      19. $$.util.int.parse()

        严格地按照十进制解析整数字符串。

        语法

        $$.util.int.parse(s)
        • s

          一个数字字符串。

        • 返回值

          一个十进制整数数字。如果不是有效的整数数字,则返回 NaN。如果字符串为 Infinity(区分大小写),则返回 Infinity

        描述

        相对于 parseInt()$$.util.int.parse() 总是按十进制解析字符串。

        示例

      20. $$.util.int.random()

        返回大于等于 min 小于 max 的一个随机整数。

        语法

        $$.util.int.random(min, max)
        • min

          最小随机整数,包含该值。

        • max

          最大随机整数,不包含该值。

        • 返回值

          一个十进制整数数字。该数字大于等于 min 小于 max。

      21. $$.util.float.parse()

        严格地按照十进制解析浮点数字符串。

        语法

        $$.util.float.parse(s)
        • s

          一个数字字符串。

        • 返回值

          一个十进制浮点数字。如果不是有效的浮点数字,则返回 NaN。如果字符串为 Infinity(区分大小写),则返回 Infinity

        描述

        相对于 parseFloat()$$.util.float.parse() 总是按十进制解析字符串。

        示例

      22. $$.util.float.random()

        返回大于等于 min 小于 max 的一个随机浮点数。

        语法

        $$.util.float.random(min, max)
        • min

          最小随机浮点数,包含该值。

        • max

          最大随机浮点数,不包含该值。

        • 返回值

          一个十进制浮点数数字。该数字大于等于 min 小于 max。

      23. $$.util.binary.toBase64()

        将指定的字节数组转换为 BASE64 字符串。

        语法

        $$.util.binary.toBase64(bytes)
        • bytes

          一个字节数组。

        • 返回值

          字节数组的 BASE64 字符串。如果没有提供 bytes,或者数组长度为 0,则返回空字符串。

        示例

      24. $$.util.binary.fromBase64()

        将指定的 BASE64 字符串转换为字节数组。

        语法

        $$.util.binary.fromBase64(str)
        • str

          一个 BASE64 字符串。

        • 返回值

          一个字节数组,如果没有提供字符串,或者字符串长度为 0,则返回空数组。如果字符串不是有效的 BASE64,则产生异常错误。

        示例

      25. $$.util.string.toUtf8()

        将指定的字符串转换为 utf-8 字节数组。

        语法

        $$.util.string.toUtf8(str)
        • str

          一个字符串。

        • 返回值

          一个字节数组,如果没有提供字符串,或者字符串长度为 0,则返回空数组。

      26. $$.util.string.fromUtf8()

        将指定的 utf-8 字节数组转换为字符串。

        语法

        $$.util.string.fromUtf8(bytes)
        • bytes

          一个字节数组。

        • 返回值

          一个字符串,表示目标字节数组按 utf-8 转换后的字符串。

      27. $$.util.string.compress()

        将指定的字符串压缩为字节数组。用于对字符串进行压缩。

        语法

        $$.util.string.compress(str)
        • str

          一个字符串。

        • 返回值

          一个字节数组。

        描述

        此方法根据 LZString 调整实现。

      28. $$.util.string.decompress()

        将指定字节数组解压缩为字符串。这是 compress 的反方向操作。

        语法

        $$.util.string.decompress(bytes)
        • bytes

          一个字节数组。

        • 返回值

          一个字符串。

        描述

        此方法根据 LZString 调整实现。

      29. $$.util.string.toBase64()

        将指定的字符串编码为 BASE64 字符串。

        语法

        $$.util.string.toBase64(str, [compress])
        • str

          一个字符串。

        • compress

          一个布尔值,指示是否压缩字符串。

        • 返回值

          BASE64 字符串。如果没有提供 str,或者长度为 0,则返回空字符串。

        描述

        如果启用了压缩,则将字符串压缩为字节数组后将字节数组转换为 BASE64 字符串。如果没有启用了压缩,则将字符串转换为 utf-8 字节数组后将字节数组转换为 BASE64 字符串。

        示例

      30. $$.util.string.fromBase64()

        将指定的 BASE64 字符串解码为原始字符串。

        语法

        $$.util.string.fromBase64(str, [decompress])
        • str

          一个 BASE64 字符串。

        • decompress

          一个布尔值,指示是否需要解压缩。

        • 返回值

          BASE64 解码后的原始字符串。

      31. $$.util.string.compareAsc()

        比较两个字符串的大小,用于根据字符串进行升序排序。

        语法

        $$.util.string.compareAsc(x, y)
        • x

          一个 String 值。

        • y

          一个 String 值。

        • 返回值

          如果 x 大于 y,返回大于 0 的值,如果 x 小于 y,返回小于 0 的值,如果 x 等于 y,则返回 0。

        示例

      32. $$.util.string.compareDesc()

        比较两个字符串的大小,用于根据字符串进行降序排序。

        语法

        $$.util.string.compareDesc(x, y)
        • x

          一个 String 值。

        • y

          一个 String 值.

        • 返回值

          如果 x 大于 y,返回小于 0 的值,如果 x 小于 y,返回大于 0 的值,如果 x 等于 y,则返回 0。

        示例

      33. $$.util.uuid.v4()

        创建一个新的 UUID。

        语法

        $$.util.uuid.v4(fmt)
        • fmt

          返回的 UUID 字符串的格式指示字符串,取值:d、D、b、B、n、N、i、I 之一,其中 iI 是等价的。

        • 返回值

          一个字符串,表示新创建的 UUID 的字符串形式,其格式由 fmt 参数决定。

        示例

      34. $$.util.uuid.toBase64()

        将指定的字符串格式的 UUID 编码为 BASE64 字符串。

        语法

        $$.util.uuid.toBase64(str)
        • str

          格式为 d、D、b、B、n、N 之一的 UUID 的字符串。

        • 返回值

          UUID 的 BASE64 字符串,长度为 22。'+' 和 '/' 分别使用 '-' 和 '_' 替换,也就是说返回的字符串是对 URL 友好的字符串。

        示例

      35. $$.util.uuid.fromBase64()

        将指定的 BASE64 字符串解码为原始 UUID 字符串。

        语法

        $$.util.uuid.fromBase64(str, [fmt])
        • str

          一个 BASE64 字符串。

        • fmt

          返回值的格式字符串,取值 d、D、b、B、n、N 之一。默认为 D。默认为 D

        • 返回值

          BASE64 解码后的原始 UUID 字符串。

      36. $$.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。

        • 返回值

          返回排序后的数组。

        示例

      37. $$.util.is.identifier()

        判断指定的字符串是否是一个有效的标识符。

        有效标识符定义如下:

        • 首字符必须是字母。

        • 其他字符是字母、数字或下划线。

        • 最长不超过 128。

        语法

        $$.util.is.identifier(s, [max])
        • s

          要判断的字符串。

        • max

          标识符的最大长度,不能超过 128。如果没有提供,默认为 30。

        • 返回值

          如果 s 是一个有效的标识符,返回 true,否则返回 false。

      38. $$.util.is.uuid()

        判断指定的字符串是否是一个有效的 UUID/GUID。

        语法

        $$.util.is.uuid(s)
        • s

          要判断的字符串。可以是长度为 22 或 24 的 BASE64,或者长度为 32 或 36 的 UUID/GUID 字符串。

        • 返回值

          如果 s 是一个有效的 UUID/GUID,返回 true,否则返回 false。

      39. $$.util.is.email()

        判断指定的字符串是否是一个有效的电子邮件地址。

        语法

        $$.util.is.email(s)
        • s

          要判断的字符串。

        • 返回值

          如果 s 是一个有效的电子邮件地址,返回 true,否则返回 false。

      40. $$.util.is.mobile()

        判断指定的字符串是否是一个有效的手机号码,目前仅支持长度为 11 的中国大陆手机号码。

        语法

        $$.util.is.mobile(s)
        • s

          要判断的字符串。

        • 返回值

          如果 s 是一个有效的手机号码,返回 true,否则返回 false。

      41. $$.util.is.password()

        判断指定的字符串是否是一个有效的密码,或者与确认密码进行比较。密码比较区分大小写。

        语法

        $$.util.is.password(s, [cmp], [max])
        • s

          要判断的字符串。

        • cmp

          要比较的字符串,通常是确认密码。

        • max

          密码字符串的最大长度,如果没有提供,则默认为 30。

        • 返回值

          如果 s 是一个有效的密码,返回 true,否则返回 false。

      42. $$.util.is.verifyingCode()

        判断指定的字符串是否是一个有效的验证码:长度为 6 的字母或数字的组合。

        语法

        $$.util.is.verifyingCode(s)
        • s

          要判断的字符串。

        • 返回值

          如果 s 是一个有效的验证码,返回 true,否则返回 false。

      43. $$.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。

      44. $$.util.is.int()

        判断指定的字符串是否是一个有效的 32 位整数,并且介于指定的范围内。

        语法

        $$.util.is.int(v, [min], [max])
        • v

          一个 Number 或 String 的整数值。

        • min

          最小整数值。默认为 -2147483648。

        • max

          最大整数值。默认为 2147483647。

        • 返回值

          如果 v 是一个有效的 32 位整数值,返回 true,否则返回 false。

      45. $$.util.is.long()

        判断指定的字符串是否是一个有效的 64 位整数,并且介于指定的范围内。

        语法

        $$.util.is.long(v, [min], [max])
        • v

          一个 Number 或 String 的整数值。

        • min

          最小整数值。默认为 Long.MIN_VALUE(参见 long.js)。

        • max

          最大整数值。默认为 Long.MAX_VALUE(参见 long.js)。

        • 返回值

          如果 v 是一个有效的 64 位整数值,返回 true,否则返回 false。

      46. $$.util.is.float()

        判断指定的字符串是否是一个有效的浮点数,并且介于指定的范围内。

        语法

        $$.util.is.float(v, [min], [max])
        • v

          一个 Number 或 String 的浮点数值。

        • min

          最小值。默认为 Number.NEGATIVE_INFINITY。

        • max

          最大值。默认为 Number.POSITIVE_INFINITY。

        • 返回值

          如果 v 是一个有效的浮点数值,返回 true,否则返回 false。

      47. $$.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。

      48. $$.util.is.orderDirection()

        判断指定的字符串是否 为 'asc' 或 'desc',不区分大小写。

        语法

        $$.util.is.orderDirection(s)
        • s

          要判断的字符串。

        • 返回值

          如果 s 为 'asc' 或 'desc',返回 true,否则返回 false。

    5. $$.ui

      提供一组与 UI 相关的辅助函数,用于显示消息对话框、进度指示以及确认对话框。

      1. $$.ui.msg

        显示消息窗口和指定的消息。这是一个只能写入的属性。

        语法

        $$.ui.msg = text
        • text

          要显示的文本消息,如果是 nullundefined 或空字符串,则隐藏消息窗口。

          特殊的,如果设置为 '...',则显示加载动画。

        示例

      2. $$.ui.alert()

        显示消息窗口和指定的消息。是 $$.ui.msg 的函数形式。

        window.alert() 不同,$$.ui.alert() 不会阻塞用户界面。

        语法

        $$.ui.alert(text)
        • text

          要显示的文本消息,如果是 nullundefined 或空字符串,则隐藏消息窗口。

          特殊的,如果设置为 '...',则显示加载动画。

      3. $$.ui.confirm()

        显示一个确认对话框和指定的确认消息,并在用户点击确定后指定的函数。

        window.confirm() 不同,$$.ui.confirm() 不会阻塞用户界面。

        语法

        $$.ui.confirm(title, msg, ok, [cancel])
        • title

          确认对话框的标题。

        • msg

          确认消息。

        • ok

          一个 Function,表示用户点击确定后要执行的函数。

        • cancel

          一个 Function,表示用户点击取消后要执行的函数。

        示例

    6. $$.web

      提供与访问应用服务相关的功能方法。包括使用 AJAX 和 Web Socket 执行功能请求以及通过 Web Socket 上传文件的封装。

      1. $$.api()

        使用指定的选项创建一个 Function 对象,该 Function 对象接下来可以用于执行远程服务器请求。

        $$.api() 函数本身不会实际执行服务请求。

        语法

        $$.api(base)
        • base

          一个对象或一个函数。如果是一个对象,表示预定义的基础请求参数。该对象的结构如下:

          如果是一个函数,则该函数应该返回具有以上结构的一个对象。

          • url

            必须提供。

            一个字符串或返回字符串的函数,表示请求的服务路径。可以以 ~/ 作为前缀,此时 ~/ 会被替换为 $$.web.appPath

            当为函数时,该函数接受 args 参数值。

          • method

            一个字符串或一个事件处理程序,表示请求方法,取值下列字符串之一:

            1. POST

              通过 AJAX 执行功能请求,这是默认的请求方法。AJAX 不支持通过 GET 方法执行请求。

            2. WEBSOCKET | WS

              通过 Web Socket 执行功能请求。此时通过 progress 可以获取操作进度。

            3. UPLOAD

              通过 Web Socket 上传文件。此时通过 progress 可以获取上传进度。

            4. UPLOAD-POST | UPOST

              首先通过 Web Socket 上传文件,然后通过 AJAX 执行功能请求。文件上传后,会通过 data 向 AJAX 功能请求传递已经上传文件的虚拟路径。

            5. UPLOAD-WS | UWS

              首先通过 Web Socket 上传文件,然后通过 Web Socket 执行功能请求。文件上传后,会通过 data 向 Web Socket 功能请求传递已经上传文件的虚拟路径。

            如果是一个事件处理程序,需要在事件中通过 event.method 设置请求方法。

            在事件处理程序中可以通过 event.args 获取 args 参数值。

          • args

            一个事件处理程序。通过 event.args 设置一个任意值,表示传递给 urlmethoddatabeforevalidatesuccessloaderror 等函数或事件处理程序的参数。

          • 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 可以是 methodargsfilesdatavalidatebeforesuccessprogressloaderror 之一。

        示例

      2. $$.web.initAppPath()

        初始化当前系统的应用路径的根路径,并将根路径保存在 localStorage 中。在 API 请求路径中,使用前缀 ~/ 表示应用路径的根,如果没有正确配置此根路径,可能会导致请求发生 404 错误。

        默认的,如果没有执行此函数,则应用路径的根路径为 '/',表示系统部署在目标应用服务的主目录下。

        initAppPath() 没有参数,在内部将当前页面路径的根保存在 localStorage 中。因此,通常应该在站点根目录下的页面中调用此函数,比如 index.html 或 index.js。这样的页面应该在进入系统时首先被访问到。

        语法

        $$.web.initAppPath()
      3. $$.web.appPath

        获取此前已经初始化的应用路径的根路径,如果此前未曾初始化,则返回 ''。这是一个只读属性。

        如果定义了 window.__APP_PATH,则优先返回 window.__APP_PATH

        语法

        $$.web.appPath
      4. $$.web.url()

        获取指定路径的完整路径,将指定路径的 '~/' 前缀替换为当前应用路径的根路径。

        此函数使用此前通过 initAppPath() 初始化的应用路径的根路径替换 '~/'。

        语法

        $$.web.url(url)
        • url

          包含了 '~/' 前缀的路径。如果没有包含 '~/' 前缀,则不做任何转换。

        • 返回值

          使用 appPath 替换了 '~/' 前缀的路径。

        示例

      5. $$.web.ajax()

        使用 POST AJAX 方法执行远程服务请求。

      6. $$.web.ws()

        使用 Web Socket 执行远程服务请求。

      7. $$.web.upload()

        使用 Web Socket 上传文件。

    7. $$.user

      提供用户登录、注销以及获取用户信息的功能支持。

      1. $$.user.current

        获取当前已经登录的用户的用户信息。如果用户尚未登录,则返回 null。这是一个只读属性。

        语法

        $$.user.current

        示例

      2. $$.user.load()

        从服务器加载当前用户的信息,加载成功后执行通过 $$(...) 注册的处理程序。

        语法

        $$.user.load([refresh])
        • refresh

          可选的一个布尔值,true 表示总是从服务器加载,false 表示如果此前已经加载过,则返回已经加载的信息。默认为 false

        • 返回值

          一个对象,表示当前用户的用户信息。

        示例

      3. $$.user.login()

        使用指定的用户名和密码登录系统,登录成功后返回用户信息,将用户令牌保存在 localStorage 中,并执行通过 $$(...) 注册的处理程序。

        如果此前有其他用户已经登录,则会删除已登录用户的令牌。

        语法

        $$.user.login(name, password, [ok], [error])
        • name

          用户的登录名称。

        • password

          用户的登录密码。

        • ok

          用户登录成功后要执行的函数。

        • error

          用户登录失败时要执行的函数。

      4. $$.user.logout()

        注销当前已经登录的用户,移除用户令牌。

        语法

        $$.user.logout([done])
        • done

          退出登录后要执行的函数。

      5. $$.user.goHome()

        将用户重定向到站点的首页。

        语法

        $$.user.goHome()
    8. $$.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 引用。

      1. $$.namespace()

        查找指定模块路径的模块的命名空间,如果模块命名空间不存在,则为目标路径创建新的命名空间。

        语法

        $$.namespace(path)
        • path

          格式为 “{开发者代码}.{应用标识符}.{模块标识符}” 的字符串,表示模块的路径。

        • 返回值

          一个对象,表示目标模块的命名空间。

        示例