logologo
开始
教程
手册
开发
插件
API
首页
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
开始
教程
手册
开发
插件
API
首页
logologo
RunJS 概述
导入模块
容器内渲染

全局变量

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Previous Pagectx.exitAll()
Next Pagectx.form

#ctx.filterManager

筛选连接管理器,用于管理筛选表单(FilterForm)与数据区块(表格、列表、图表等)之间的筛选关联。由 BlockGridModel 提供,仅在其上下文中(如筛选表单区块、数据区块)可用。

#适用场景

场景说明
筛选表单区块管理筛选项与目标区块的连接配置,筛选变更时刷新目标数据
数据区块(表格/列表)作为被筛选目标,通过 bindToTarget 绑定筛选条件
联动规则 / 自定义 FilterModel在 doFilter、doReset 中调用 refreshTargetsByFilter 触达目标刷新
连接字段配置使用 getConnectFieldsConfig、saveConnectFieldsConfig 维护筛选器与目标的字段映射

注意:ctx.filterManager 仅在有 BlockGridModel 的 RunJS 上下文中可用(如包含筛选表单的页面内);普通 JSBlock 或独立页面中为 undefined,使用前建议做可选链判断。

#类型定义

filterManager: FilterManager;

type FilterConfig = {
  filterId: string;   // 筛选器模型 UID
  targetId: string;   // 目标数据区块模型 UID
  filterPaths?: string[];  // 目标区块的字段路径
  operator?: string;  // 筛选操作符
};

type ConnectFieldsConfig = {
  targets: { targetId: string; filterPaths: string[] }[];
};

#常用方法

方法说明
getFilterConfigs()获取当前所有筛选连接配置
getConnectFieldsConfig(filterId)获取指定筛选器的连接字段配置
saveConnectFieldsConfig(filterId, config)保存筛选器的连接字段配置
addFilterConfig(config)添加筛选配置(filterId + targetId + filterPaths)
removeFilterConfig({ filterId?, targetId?, persist? })删除筛选配置,按 filterId 或 targetId 或二者
bindToTarget(targetId)将筛选配置绑定到目标区块,触发其 resource 应用筛选
unbindFromTarget(targetId)从目标区块解除筛选绑定
refreshTargetsByFilter(filterId 或 filterId[])根据筛选器刷新关联的目标区块数据

#核心概念

  • FilterModel:提供筛选条件的模型(如 FilterFormItemModel),需实现 getFilterValue() 返回当前筛选值
  • TargetModel:被筛选的数据区块,其 resource 需支持 addFilterGroup、removeFilterGroup、refresh

#示例

#添加筛选配置

await ctx.filterManager?.addFilterConfig({
  filterId: 'filter-form-item-uid',
  targetId: 'table-block-uid',
  filterPaths: ['status', 'createdAt'],
  operator: '$eq',
});

#刷新目标区块

// 筛选表单的 doFilter / doReset 中
ctx.filterManager?.refreshTargetsByFilter(ctx.model.uid);

// 刷新多个筛选器关联的目标
ctx.filterManager?.refreshTargetsByFilter(['filter-1', 'filter-2']);

#连接字段配置

// 获取连接配置
const config = ctx.filterManager?.getConnectFieldsConfig(ctx.model.uid);

// 保存连接配置
await ctx.filterManager?.saveConnectFieldsConfig(ctx.model.uid, {
  targets: [
    { targetId: 'table-uid', filterPaths: ['status'] },
    { targetId: 'chart-uid', filterPaths: ['category'] },
  ],
});

#删除配置

// 删除某筛选器的所有配置
await ctx.filterManager?.removeFilterConfig({ filterId: 'filter-uid' });

// 删除某目标的所有筛选配置
await ctx.filterManager?.removeFilterConfig({ targetId: 'table-uid' });

#相关

  • ctx.resource:目标区块的 resource 需支持筛选接口
  • ctx.model:获取当前模型 UID 用于 filterId / targetId