# 其它规则
提示
除开在上一章节提到的 预先了解,这里还有一些不太常用的表单规则。
# 自定义组件默认值
在全局配置里,可以单独为某个组件/第三方组件设置初始值,智能回填到 form.data
中。
const formConfig = {
"xx-array-input": function () {
return { defaultValue: [] }
},
}
Vue.use(agelForm, formConfig);
# 局部加载单组件
若不想把一个不常用的组件注册在全局,可以用 item.component
支持加载组件实例,或者异步组件。
// 局部加载组件
import xxxCustomInput from "./xxxCustomInput"
const item = {component:xxxCustomInput}
// 异步加载组件
const item = {component:()=> import("./xxxCustomInput") }
# 控制数据流
item.vmodel
支持修饰符,也设置 false 可以得到一个类似 readonly
的效果,需要在 input
事件手动更新值,你可以在 input 时 dosomething 来更加深入的控制数据流。
const form = {
data:{ },
items:[
{ prop:"a", vmodel:false, on:{ input:(v) => this.form.data.a = v.trim() }},
{ prop:"b", vmodel:".trim" }}
{ prop:"c", vmodel:".number", type:"number" }}
]
}
# 深层次结构绑定
item.prop
可以绑定一个对象的属性。
const form = {
data:{
obj:{ name:"123"}
},
items:[
{ prop:"obj.name"}
]
}
# 动态属性的冲突
当组件的动态属性与现有的 item.xx
属性产生重名冲突,可使用 $component
属性解决。
{
label: "radio 组件",
prop:"radio",
component: "el-radio",
$component: {
label: "radio组件的label属性",
},
},
# 扩展&忽略 item 属性
当你想对 item
添加自定义的属性来实现某些需求,又不想该属性注入到 component
中,可以使用 item-extend-keys
属性。
<agel-form v-model="form" :item-extend-keys="['collapseAlive']"/>
# 分散参数
设计原因,form对象不可设置为计算属性,可使用 attach
进行分散参数,配置项与 form
一致,当该对象属性发生变化时候,会同步属性合并到 form
对象中。
<agel-form v-model="form" :attach="{data,items,}"/>
不再推荐使用该属性,在复杂环境下更建议直接使用 agelFormLayout 相关组件实现复杂表单的需求。
← 创建表单 Layout 表单布局 →