扩展自定义属性
FormCreate 提供了强大的扩展机制,允许开发者通过自定义属性实现复杂的业务逻辑和动态表单生成。本文将详细介绍如何定义和使用自定义属性,以及如何在实际业务场景中应用这些功能。
自定义属性的基本概念
通过自定义属性扩展,您可以为表单组件定义特定的行为或逻辑,例如动态数据加载、验证规则、或其他业务逻辑处理。自定义属性可以在表单生成规则中进行配置,并在组件的生命周期中触发相应的回调。
内置自定义属性
- 必填验证: required
- 远程数据加载: fetch
- 静态数据加载: loadData
- 组件内自定义验证: componentValidate
数据结构
ts
type Effect = {
//自定义属性的名称
name: string;
//rule初始化
init({value}, rule, fapi);
//rule开始加载
load({value}, rule, fapi);
//rule初始化完
created({value}, rule, fapi);
//rule加载完成
loaded({value}, rule, fapi);
//属性值发生变化
watch({value}, rule, fapi);
//组件的值发生变化
value({value}, rule, fapi);
//control 生效
control({value}, rule, fapi);
//rule 移除
deleted({value}, rule, fapi);
//rule 生成
mounted({value}, rule, fapi);
}
定义自定义属性扩展
要创建一个自定义属性扩展,您需要定义一个属性对象,并注册到 FormCreate 中。以下是一个完整的示例:
1. 定义自定义属性
js
const optionEffect = {
//自定义属性的名称
name: 'option',
//rule开始加载
load({value}, rule, fapi) {
setTimeout(() => {
rule.options.push(...[
{label: value, value: value}, {label: value + value, value: value + value},
])
}, 300)
},
//属性值发生变化
watch({value}, rule, fapi) {
setTimeout(() => {
rule.options.push(...[
{label: value, value: value}, {label: value + value, value: value + value},
])
}, 300)
},
}
2. 注册自定义属性 注册自定义属性扩展后,您可以在规则中使用它:
js
formCreate.register(optionEffect)
3. 在规则中使用自定义属性
在生成规则中,您可以通过 effect 属性来使用自定义属性:
js
const rule = {
type: 'input',
field: 'username',
title: '用户名',
effect: {
option: 'someValue' // 使用自定义属性
}
}
或者使用简写方式:
js
const rule = {
type: 'input',
field: 'username',
title: '用户名',
$option: 'someValue' // 使用自定义属性的简写形式
}
示例
加载选项数据
在组件初始化时动态添加选项数据,实现表单选项的异步加载和动态更新功能。
通过组件的值计算
通过自定义注册逻辑,根据组件的值动态修改组件后缀(suffix),实现表单组件显示内容的动态更新。
监听自定义属性变化
通过watch监听自定义属性变化,实时响应组件属性变化并动态更新其他属性(如prefix),实现表单组件之间的联动和动态交互效果。
通过自定义属性扩展,FormCreate 提供了灵活而强大的表单动态生成和控制能力。开发者可以根据具体的业务需求,定义各种自定义属性,实现复杂的表单逻辑、动态数据加载和联动效果。