docs/docs/cn/interface-builder/event-flow.md
如果你想在某个表单变更时触发一些自定义的操作,就可以使用事件流来实现。除了表单之外,页面、区块、按钮和字段都可以使用事件流来配置一些自定义的操作。
下面会以一个简单的例子,来说明如何配置事件流。让我们来实现两个表格之间的联动,当点击左侧表格的某一行时,自动筛选右侧表格的数据。
配置步骤如下:
通用事件,在页面、区块、按钮或者字段中都可以使用。在这个事件中,可以做一些初始化的工作。比如在不同的条件下,配置不同的数据范围。
表格区块专属事件。当点击表格行时触发。触发时会在上下文中增加一个 Clicked row record,可以作为变量在条件和步骤中使用。
表单区块专属事件。当表单字段的值变更时触发。可以在条件和步骤中通过“Current form”变量来获取表单的值。
按钮的专属事件。当点击按钮时触发。
在事件流配置里,有两个容易混淆的概念:
很多页面、区块或操作本身就带有一套系统内置的处理流程(例如:提交、打开弹窗、请求数据等)。当你为同一个事件(例如“点击”)新增自定义事件流时,“执行时机”用来决定:
提示:如果你不确定该选哪个内置流程/步骤,优先使用前两项(“之前 / 之后”)即可。
用来自定义一个变量,然后在上下文中使用。
自定义的变量有作用域,比如在区块的事件流中定义的变量只能用在这个区块中。如果想在当前页面中所有的区块中都能用,则需要在页面中的事件流进行配置。
使用某个表单区块的值作为变量来使用。具体配置如下:
后续会陆续支持其它变量,敬请期待。
设置目标区块的数据范围。具体配置如下:
刷新目标区块,允许配置多个区块。具体配置如下:
跳转到某个 URL。具体配置如下:
全局展示操作反馈信息。
全局展示通知提醒信息。
在系统四个角显示通知提醒信息。经常用于以下情况:
执行 JavaScript 代码。
在流程中需要调用外部接口或第三方服务时,可以通过 Custom request 触发一个自定义 HTTP 请求。常见使用场景包括:
请求执行完成后,其返回数据可以在后续步骤中继续使用,例如进行数据处理、条件判断或存储等。
GET、POST、PUT、DELETE 等。Authorization、Content-Type 等。GET 请求。POST、PUT 等请求,可以填写 JSON、表单数据等。ctx.steps 获取。场景:在表单中触发事件流,请求第三方 API,拿到数据后自动回填到表单字段。
配置步骤:
const res = await ctx.api.request({
method: 'get',
url: 'https://jsonplaceholder.typicode.com/users/2',
skipNotify: true,
// Note: ctx.api will include the current NocoBase authentication/custom headers by default
// Here we override it with an "empty Authorization" to avoid sending the token to a third party
headers: {
Authorization: 'Bearer ',
},
});
const username = res?.data?.username;
// replace it with actual field name
ctx.form.setFieldsValue({ username });