本文将介绍form-create如何给内置组件和自定义组件添加事件
form-create 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成器。并且支持生成任何 Vue 组件。结合内置17种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。
如果对您有帮助,您可以在 GitHub 上给作者点个"Star" 支持一下 谢谢!
例如给i-input
组件添加on-change
事件
{
type:'input',
field: 'test',
title: 'test',
value: '',
on: {
'on-change': function(){
console.log('value 发生变化');
}
}
}
通过 emit 方式绑定事件
只支持在组件模式下
//rule
[{
type:'input',
field: 'test',
title: 'test',
value: '',
emit: ['on-change']
}]
事件名称为${field}-${eventName}
<form-create :rule="rule" test-on-change="onChange"> </form-create>
通过 emitPrefix
自定义事件前缀
//rule
[{
type:'input',
field: 'test',
title: 'test',
value: '',
emit: ['on-change'],
emitPrefix: 'xaboy',
}]
事件名称为${emitPrefix}-${eventName}
<form-create :rule="rule" xaboy-on-change="onChange"> </form-create>
向事件中注入$f
和自定义参数
//rule
[{
type:'input',
field: 'test',
title: 'test',
value: '',
emit: [{
name: 'on-change',
inject: ['自定义参数,数据类型不限']
}],
emitPrefix: 'xaboy',
}]
<form-create :rule="rule" xaboy-on-change="onChange"> </form-create>
向事件中注入参数后,事件会额外增加一个参数
//未注入
{
onChange: function(val){ }
}
//注入后
{
onChange: function(inject, val){ }
}
inject 参数的数据结构
{
$f:Object,//api
rule:Array,//生成规则
option:Object,//全局配置
inject:Any,//自定义注入的参数
}
参数注入也可以通过全局配置项injectEvent:true
开启