Skip to main content
本文档主要介绍宜搭平台在 JS 面板或变量绑定弹框中可以直接调用的 API 及其使用方法,每一个 API 都会配备一个示例用于展示 API 的具体使用方式,在示例中,我们都会通过以下函数结构来进行包裹用于模拟动作面板的真实使用场景(包裹的函数名称在真实环境下用户可以自由定义)。

开始之前

以下 API 要求你具备一定的 JavaScript 基础知识,了解一些常见的数据类型、变量和函数的声明和使用,同时知道并能绕开一些常见的 JavaScript 陷阱。 以下面的 API 中常见的 this.statethis.setStatethis.$() 为例,当 this 出现在事件函数的最外层时,this 会指向正确的执行上下文,从而能够很好的完成读取数据源、设置数据源以及获取其他表单数据:
但如果 this 出现在嵌套函数中,就需要注意 this 指向是否正确了:
推荐一些 JavaScript 入门指南:

全局变量 API

宜搭的设计模式主要参考 React 的方案,因此我们提供全局变量来进行页面级状态管理并提供相应的 API 来触发页面的重新刷新(具体使用参考 全局变量文档)。

this.state.xxx

获取全局变量的值(和 React 的 API 一致)。 xxx 一般为页面数据源的变量名称。 示例:

this.setState()

设置全局变量的值并触发页面重新渲染(和 React 的 API 基本一致)。 注意:禁止使用 this.state.a = b 的方式修改变量的值,后续升级将不能保证兼容性,相关代码将不能正常运行。 示例:

远程数据 API

宜搭支持配置远程数据源,并提供通过 js 触发远程数据源调用的 API(具体使用参考 远程 API 文档)。

this.dataSourceMap.xxx.load()

手动调用指定的远程 API,xxx 为在数据源面板设置的数据源名称,同时支持传入请求参数,API 调用传入的请求参数将于数据源配置中的请求参数进行 merge 并发送请求,load 方法返回一个 Promise。 示例:

this.reloadDataSource()

重新请求所有自动加载设置为 true 的远程 API,该方法也返回一个 Promise。 示例:

JS 调用 API

宜搭提供动作面板进行 JS 代码编写,动作面板中的函数除了变量绑定及动作绑定使用之外还支持函数间的相互调用。

this.methodName()

我们提供动作面板中 js 函数的相关调用方式,用户可以使用 this.xxx(), 调用动作面板中的其他函数,其中 xxx 为其他函数的名称。 示例:

工具类相关 API

宜搭提供了很多内置的工具类函数,帮助用户更好地实现一些常用功能。

this.utils.dialog()

弹出对话框,效果如下图所示,用户需要手动关闭:
宜搭底层采用 fusion 组件进行实现,你可以配置所有 Dialog 组件的属性 文档地址,以下列出了常用属性: 示例:

this.utils.formatter()

常用的 formatter 函数用于进行事件、金额、手机号等 format。 示例:

this.utils.getDateTimeRange(when, type)

获取当前或指定日期的开始结束区间时间戳。 whentype 都可选,默认返回当天的开始结束区间,可以指定日期和区间类型。 示例:

this.utils.getLocale()

获取当前页面的语言环境。 示例:

this.utils.getLoginUserId()

获取登录用户 ID。 示例:

this.utils.getLoginUserName()

获取登录用户名称。 示例:

this.utils.isMobile()

判断当前访问环境是否是移动端。 示例:

this.utils.isSubmissionPage()

判断当前页面是否是数据提交页面。 示例:

this.utils.isViewPage()

判断当前页面是否是数据查看页面。 示例:

this.utils.loadScript()

动态加载远程脚本。 示例:

this.utils.openPage()

打开新页面。 如果在钉钉环境下,会使用钉钉 API 打开新页面,体验会更友好一些。 示例:

this.utils.previewImage()

图片预览,通过这个 API 我们可以实现一个简洁的图片预览效果,如下所示:
示例:

this.utils.toast()

信息提醒,会比 Dialog 对话框更加轻量,弹出后过一段时间会自动消失,效果如下图所示:
参数配置: 示例:

路由相关 API

宜搭提供获取路由信息及页面跳转相关 API,底层实现主要使用 react-router,因此跳转 API 与 react-routerAPI 基本一致,另外宜搭还提供了一些路由相关的扩展 API。

this.utils.router.push()

页面跳转并且会将跳转记录 push 到路由堆栈中,可以通过浏览器的回退按钮进行回退,push 的参数描述如下所示:
示例:

this.utils.router.replace()

页面替换,与 router.push 的区别是该 API 会替换当前页面而不是进入下一个页面,因此无法通过浏览器的返回按钮进行退回,等价于:
示例:

this.utils.router.getQuery()

获取页面 URL 参数,若传入 key 参数则返回定义的参数值,否则返回 URL 的所有参数,getQuery 的参数描述如下:
示例:

this.utils.router.stringifyQuery()

序列化 URL 参数,即将对象转换成 URL 参数形式。 示例:

组件通用 API

在讲解组件相关的 API 之前需要提前介绍几个概念
  • 组件唯一标识(fieldId)- 宜搭会为每个组件设置一个唯一标识,用于识别组件实例,组件唯一标识可以通过组件属性面板进行查看;
  • 组件属性(prop)- 在宜搭中每个组件都可以通过设置组件属性来实现不同功能(类似 React 的 props),我们可以通过 hover 组件属性面板查看配置项对应的属性名称;
组件通用 API 对于宜搭提供的所有组件都可以使用,主要用于读取或者设置组件的属性。

this.$(fieldId).get(prop)

通过 fieldId 找到组件并获取组件的属性值,fieldId 为组件标识,prop 为组件的属性名称。 注意:禁止使用 this.$(fieldId).xxx 的方式读取属性值,后续升级将不能保证兼容性,相关代码将不能正常运行。 示例:

this.$(fieldId).set(prop, value)

通过 fieldId 找到组件并设置组件的属性值,fieldId 为组件标识,prop 为组件属性名称,value 为要设置的属性值。 注意:禁止使用 this.$(fieldId).xxx = xxx 的方式设置属性值,后续升级将不能保证兼容性,相关代码将不能正常运行。 示例:

表单组件 API

表单组件是宜搭平台中最重要的一类组件,我们通常通过表单组件来收集数据,例如:输入框、单选、多选、下拉选择等,本部分将主要介绍表单组件相关的 API:

this.$(fieldId)

获取组件实例,fieldId 为组件唯一标识,在调用组件 API 之前,通常我们需要通过 this.$(fieldId) 先获取组件实例再进行 API 调用。 注意:禁止使用 this.$(fieldId).xxx 的方式获取一些不在文档中说明的 API 和属性来使用,文档中未注明的 API 和属性为私有内部实现,后续升级将不能保证兼容性,相关代码将不能正常运行。

this.$(fieldId).getValue()

获取指定表单组件的输入值。 示例:

this.$(fieldId).setValue()

设置指定表单组件的输入值,setValue 的参数描述如下所示:
示例:

this.$(fieldId).reset()

重置指定表单组件的输入值,reset 的参数描述如下所示:
示例:

this.$(fieldId).getBehavior()

获取指定表单组件的当前状态,表单组件的状态有以下可选值:
  • NORMAL - 正常态,即输入态;
  • READONLY - 只读态;
  • DISABLED - 禁用态;
  • HIDDEN - 隐藏态;
示例:

this.$(fieldId).setBehavior()

设置指定表单组件的状态,可以设置的状态可以参考 getBehavior 部分的描述。 示例:

this.$(fieldId).resetBehavior()

重置指定表单组件的状态。 示例:

this.$(fieldId).validate()

执行一次指定表单组件的校验,validate 的参数描述如下所示:
示例:
当一个输入框的校验规则为手机号时,如果校验失败,会打印出以下结构:

this.$(fieldId).disableValid()

关掉表单组件的校验。 示例:

this.$(fieldId).enableValid()

开启表单组件的校验,enableValid 的参数描述如下所示:
示例:

this.$(fieldId).setValidation()

设置表单组件的校验规则,setValidation 的参数描述如下所示:
宜搭支持的校验类型如下所示: 示例:

this.$(fieldId).resetValidation()

重置表单组件的校验规则,即在 setValidation 后用于恢复之前的校验规则,resetValidation 的参数如下所示:
示例:

Dialog 组件 API

宜搭提供了一个对话框组件用于展示对话框形式的内容展示,同时提供了一些 API 来操作对话框的行为。

this.$(fieldId).show()

显示指定对话框,该 API 提供一个 callback 函数能够在对话框展示后回调。 示例:

this.$(fieldId).hide()

关闭指定对话框。 示例: