【界面设计器】组件开发常见问题

如何获取当前页面中的全部可用字段?

Class Component(ts)中使用以下代码获取当前设计组件实例

``` ts
import { WidgetInstance } from '@kunlun/ui-designer-dependencies';

@Widget.Reactive()
@Widget.Inject()
protected currentInstance: WidgetInstance | undefined;
```

PS:这里使用了@kunlun/ui-designer-dependencies依赖包中的类型定义,但没有使用函数,因此这个导入是可以正常执行的。

Vue组件中使用以下代码获取可选字段列表

``` ts
import { WidgetInstance } from '@kunlun/ui-designer-dependencies';

// props add currentInstance define
props: {
currentInstance: {
type: Object as PropType<WidgetInstance>
}
}

// setup using currentInstance get fields
const fields = computed(() => {
return Array.from(props.currentInstance?.root?.fieldCollection.values() || []).map((v) => {
return {
label: v.element?.widgetData?.displayName,
value: v.element?.name
};
});
});
```

PS:这里的v.element?.widgetData?.displayName获取的是字段的元数据显示名称,如果需要获取字段输入的标题可以使用v.element?.properties?.label

为什么需要选择当前页面中的字段?

页面在发起请求时,会根据当前视图中的字段查询最小结果集,不在页面中的字段无法被正确获取。可以将用到的字段拖放至视图中,并使用【隐藏】属性进行隐藏即可。

列内容超过当前表格行高该怎么办?

在界面设计器中选中表格组件,可以为表格设置指定的行高。

在界面设计器的属性面板组件中,如何获取当前字段所在模型的模型编码?

``` ts
interface InternalMetadata {
model?: string;
}

@Widget.Reactive()
protected get currentModel(): string | undefined {
return (this.formData._metadata as InternalMetadata)?.model;
}
```

在界面设计器的属性面板组件中,如何获取关联关系字段的关联模型的模型编码?

``` ts
interface InternalMetadata {
modelReferences?: {
model?: string;
};
}

@Widget.Reactive()
protected get referenceModel(): string | undefined {
return (this.formData._metadata as InternalMetadata)?.modelReferences?.model;
}
```

如何理解关联关系字段中的【透出字段(选项字段列表)】属性?

正如我们现在已知的,页面发起查询请求时,将根据页面中的元数据获取最小结果集,不在页面中的字段并不包含在结果集中。这样虽然使得我们可以最小化的控制结果集的大小。

但对于关联关系类型的字段来说,我们也面临了一个无法回避的问题:对于【表格】、【表单】等这些组件,我们可以通过拖放字段的方式直接将字段展示在页面中,因此对于这些可被设计的组件而言无需其他过多的配置即可正常使用。但对于【下拉单选】、【下拉多选】等这些组件而言,我们无法在页面中直接定义关联关系字段的元数据。

我们在解决这一问题上也同样做了很多,比如当你在【下拉单选】中设置【选项标题】时,选项标题中的字段会被自动透出到页面中,在发起请求时也就能正常获取这些字段了。

特殊的是,如果某些字段只是在逻辑上被使用的,但又不能将其通过【选项标题】展示给用户的时候,我们必须使用一个属性来定义这些字段,使得我们的业务逻辑可以正常运行。因此,我们设计了【透出字段】来解决这一问题。

为什么在属性面板中的【选项字段列表】是【透出字段】呢?

正如我们在业务开发过程中,服务端的模型定义的显示名称和在界面设计器中的字段标题可以是不一致的。由于服务端模型定义的字段API名称为optionFields,其中文直译是【选项字段列表】,但我们在产品设计时,希望这一属性可以被用户理解,因此在页面上展示的时候使用了【透出字段】作为标题呈现给用户。

在界面设计器中如何配置【透出字段(选项字段列表)】?

optionFields在配置时使用的是字段的API名称,在关联关系属性定义时,允许使用.分隔的方式定义关联关系字段的关联属性。

如:['code', 'name', 'user.code', 'user.name']。
其中user字段为多对一(M2O)的关联关系字段,其中有两个字段codename

与之对应的GQL响应结构为:

query {
    xxxxxxQuery {
        queryPage(xxxxxx) {
            content {
                code
                name
                user {
                    code
                    name
                }
            }
        }
    }
}

在界面设计器的属性面板组件中,如何通过代码方式设置【透出字段(选项字段列表)】?

@Widget.Method()
public setOptionFields(optionFields: string[]) {
  this.formData.optionFields = optionFields;
}

如何在字段中使用mountedCallChaining提供mountedProcess方法?

@Widget.Reactive()
@Widget.Inject()
protected mountedCallChaining: CallChaining | undefined;

protected mountedProcess() {}

protected mounted() {
  super.mounted();
  this.mountedCallChaining?.hook(this.path, async () => {
    await this.mountedProcess();
  });
}

protected unmounted() {
  super.unmounted();
  this.mountedCallChaining?.unhook(this.path);
}

Oinone社区 作者:nation原创文章,如若转载,请注明出处:https://doc.oinone.top/oinone-faq/58.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
nation的头像nation数式员工
上一篇 2023年6月20日 pm4:07
下一篇 2023年11月2日 pm1:58

相关推荐

  • 常见启动问题

    一、配置问题: 1.证书问题,如过期、路径等。排查文档:https://doc.oinone.top/install/backendinstall/13760.html2.模型中关系字段配置问题。排查文档:https://doc.oinone.top/wen-ti-zhen-duan/15999.html3.跨模块依赖诸多问题。排查文档:https://doc.oinone.top/install/backendinstall/14824.html4.代码问题。如枚举类忘记添加类注解等 二、 环境问题: 1.版本问题。同base库的多个环境版本不一致,从而引发系列问题,如数据表重复新增删除。2.数据表唯一键冲突。 三、场景启动问题分析及解决方案 1.后端启动慢如何排查https://doc.oinone.top/faq/16613.html 2.验证服务是否启动成功https://doc.oinone.top/oinone-faq/17905.html 3.启动时提示未配置SQL记录存储目录,然后启动失败报错https://doc.oinone.top/faq/17048.html 4.启动报错,公共环境开启了元数据保护模式,本地开发环境需配置https://doc.oinone.top/faq/17045.html 5.在docker容器里启动,路径配置正确,仍旧报错https://doc.oinone.top/faq/17040.html 6.容器启动服务,License认证报错https://doc.oinone.top/faq/17039.html 7.系统启动耗时过长,内存耗用过大https://doc.oinone.top/faq/6659.html 8.启动提示:依赖的模块不存在https://doc.oinone.top/faq/6630.html 9.协同模式下,本地开发的模型在设计器里找不到https://doc.oinone.top/faq/17110.html 10.测试服务访问测试服务里docker容器的设计器服务接口,报dubbo接口不存在https://doc.oinone.top/faq/17055.html

    2024年10月23日
    38900
  • 常见权限问题

    一、系统权限操作手册配置 https://doc.oinone.top/chan-pin-shi-yong-shou-ce/17797.html 二、常见权限问题分析及解决 1.函数如何跳过权限拦截https://doc.oinone.top/wen-ti-zhen-duan/16299.html 2.工作流工作台无权限排查路径https://doc.oinone.top/wen-ti-zhen-duan/15924.html 3.windows环境npm安装依赖提示无权限https://doc.oinone.top/faq/14590.html 4.权限异常排查路径参考https://doc.oinone.top/faq/14391.html 5.自定义RSQL占位符(placeholder)及在权限中使用https://doc.oinone.top/backend/6393.html 6.自定义数据权限拦截处理https://doc.oinone.top/backend/4737.html 7.如何扩展行为权限https://doc.oinone.top/dai-ma-shi-jian/18976.html 8.跳转动作无权限问题排查https://doc.oinone.top/wen-ti-zhen-duan/18678.html

    2024年10月23日
    38300
  • 自定义页面问题

    2022年2月10日
    94500
  • 如何排查启动依赖错误的问题

    场景 启动的时候可能会出现以下错误提示 启动模块中包含jar包或者数据库中不存在的模块 启动模块中包含不存在的模块 启动模块互斥模块中包含已安装模块 排查项 确保启动工程的application.yml中的启动模块pamirs.boot.modules配置项内的模块在pom.xml内依赖了对应模块的jar包 确保出问题的模块的定义文件内的包扫描前缀packagePrefix方法内的路径定义正确,该路径可以是多个,但是一定要包含模块下所有子工程的路径,包括但不限于api子工程、core工程等,另外该路径也不能和其他模块的配置有重复、交集、包含关系(例如:a模块是 aa.bb.cc, b模块是aa.bb,这样b模块的路径就包含了a模块的) 启动类里spring自带的@ComponentScan.basePackages注解项需要包含所有依赖模块的路径 无代码应用创建的时候,配置了依赖模块。但这个依赖没有被本地安装,该模块就会出问题,要么删除该依赖,要么在代码里添加该依赖。

    2024年7月18日
    1.0K00
  • 工作流常见问题

    一、工作流引用及触发 1.项目中工作流引入和流程触发https://doc.oinone.top/backend/4361.html 2.【工作流】如何添加工作流运行时依赖https://doc.oinone.top/workflow/13144.html 3.工作流查看、处理流程https://doc.oinone.top/oio4/9388.html 二、 常见工作流功能应用及扩展 1.动态表单https://doc.oinone.top/designer/workflowdesigner/16336.html 2.【工作流】如何自定义支持在加签的同时审批同意https://doc.oinone.top/workflow/13505.html 3.【工作流】如何自定义工作流的待办任务列表https://doc.oinone.top/workflow/6989.html 4.【工作流】如何在业务模型的列表中展示工作流的审批按钮https://doc.oinone.top/workflow/6987.html 5.【工作流】流程扩展自定义函数示例代码汇总https://doc.oinone.top/designer/workflowdesigner/4802.html 6.工作流审核撤回/回退/拒绝钩子使用https://doc.oinone.top/backend/4542.html 三、工作流常见使用问题分析及处理 1.测试环境的流程向正式环境迁移,5.1.x是否还需要部署流程设计器https://doc.oinone.top/faq/17858.html 2.流程设计器里,部门领导审批环节,审批按钮不见了https://doc.oinone.top/faq/17684.html 3.流程设计器,在某个节点审批完后,能否自定义抄送/知会人员(可能多个)https://doc.oinone.top/faq/17516.html 4.流程设计器,填写审批意见,能支持富文本吗?https://doc.oinone.top/faq/17510.html 5.流程设计器,想在同意时加入电子签名https://doc.oinone.top/faq/17503.html 6.加了工作流模块,但是界面设计器模型动作下没有业务流程按钮https://doc.oinone.top/faq/17206.html 7.流程设计器,流程审批人是传哪个类型的IDhttps://doc.oinone.top/faq/17198.html 8.流程设计器里,配置更新数据触发场景,但更新数据时没有触发自动发起流程https://doc.oinone.top/faq/17192.html 9.动态根据业务数据的字段值显示审批同意按钮的文案https://doc.oinone.top/faq/13822.html 10.自定义审批方式、自定义审批节点名称https://doc.oinone.top/backend/4847.html

    2024年10月24日
    1.6K00

Leave a Reply

登录后才能评论