使用form-create监听组件的事件
FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持5个UI框架,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定
FormCreate官网:https://www.form-create.com
帮助文档:https://form-create.com/v3/
通过配置项`on`,`emit`可以监听组件内抛出的事件
1. 通过配置项`on`监听事件
<template>
<div>
{{ text }}
<form-create :rule="rule" v-model:api="fApi" :option="options"/>
</div>
</template> <script>
export default {
data() {
return {
fApi: {},
text: '没有变化',
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
}
},
rule: [
{
type: 'input',
field: 'event',
title: 'change 事件',
on: {
change: (val) => {
this.text = '变化了:"' + val.target.value + '"';
}
}
}
]
} }
}
</script>
2. 通过配置项`emit`监听事件
通过`emit`方式监听事件时,事件名称中的大写会自动转换成`-`+小写
例如`inputField`组件的 `change`事件,事件名称为`input-field-change`
<template>
<form-create v-model:api="fApi" :rule="rule" :option="options" @input-field-change="change"
@input-field2-blur="blur"/>
</template> <script>
export default {
data() {
return {
fApi: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
}
},
rule: [
{
type: 'input',
field: 'inputField',
title: 'change 事件',
emit: ['change']
},
{
type: 'input',
field: 'inputField2',
title: 'blur 事件',
emit: ['blur']
}
]
} },
methods: {
change() {
alert(`change: "${this.fApi.getValue('inputField')}"`)
},
blur() {
alert('blur!')
}
}
}
</script>
3. 通过配置项`emitPrefix`自定义事件前缀
事件名称为`${emitPrefix}-${eventName}`
<template>
<form-create :rule="rule" v-model:api="fApi" :option="options" @prefix1-change="change" @prefix2-blur="blur"/>
</template> <script>
export default {
data() {
return {
fApi: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
}
},
rule: [
{
type: 'input',
field: 'inputField',
title: 'change 事件',
emit: ['change', 'blur'],
emitPrefix: 'prefix1'
},
{
type: 'input',
field: 'inputField2',
title: 'blur 事件',
emit: ['blur'],
emitPrefix: 'prefix2'
}
]
} },
methods: {
change() {
alert(`change: "${this.fApi.getValue('inputField')}"`)
},
blur() {
alert('blur!')
}
}
}
</script>
4. 通过`Api.on`方法监听事件
<template>
<form-create :rule="rule" v-model:api="fApi" :option="options"/>
</template> <script>
export default {
data() {
return {
fApi: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
}
},
rule: [
{
type: 'input',
field: 'inputField',
title: 'change 事件',
emit: ['change', 'blur'],
emitPrefix: 'prefix1'
},
{
type: 'input',
field: 'inputField2',
title: 'blur 事件',
emit: ['blur'],
}
]
} },
methods: {
change() {
alert(`change: "${this.fApi.getValue('inputField')}"`)
},
blur() {
alert('blur!')
}
},
mounted() {
this.fApi.on('prefix1-change', this.change)
this.fApi.on('input-field2-blur', this.blur)
}
}
</script>
使用form-create监听组件的事件的更多相关文章
- Vue中如何监听组件的原生事件
在首页开发中,右下角有一个返回顶部的小箭头,将它单独封装成一个BackTop组件,但是它何时出现需要依赖于首页的滑动,即另外一个Scroll组件.如果直接在BackTop组件里面监听,则需要通过thi ...
- [置顶] flex4事件监听与自定义事件分发(三)
1.我们来说一下自定义事件子类.什么时候创建新的事件类以及怎么创建. (1)说一下,我们什么时候需要自定义事件类.举例说明,在flex中事件的基类是Event,而当我们点击某个按钮或者是单击某个组件的 ...
- 三种方式监听NGUI的事件方法
NGUI研究院之三种方式监听NGUI的事件方法(七) NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定 ...
- IOS之UI--自定义按钮实现代理监听点击事件
前言: Objective-C提供的按钮监听事件的方法是 不含参数的监听方法 [button实例对象 addTarget:self action:@selector(func) forControlE ...
- Android监听点击事件实现的三种方法
监听点击事件实现的三种方法:1.匿名内部类2.外部类3.直接实现接口 1.匿名内部类: package com.jereh.calculator; import android.content.Con ...
- javascript 原生方法监听DOM结构改变事件
js原生方法监听DOM结构改变事件 document.addEventListener('DOMNodeInserted',function(){alert(1)},false);document.a ...
- WPF之监听组合键事件
private void KeyDown(object sender, KeyEventArgs e) { if (e.Key== Key.Up && Keyboard.Modifie ...
- Python——pyHook监听鼠标键盘事件
pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...
- 利用spring的ApplicationListener监听某一类事件的发生
1.ApplicationListener在使用过程中可以监听某一事件的发生,可以做出相应的处理,这个方式不常用,但是在特殊情况下面还是有用的. 2.导包pom.xml <project xml ...
- js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写
js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写 一.总结 一句话总结:滚动事件scroll(),浏览器窗口调整监听resize(),思考好监听对象. 1.滚动事件scroll()的监听对象是 ...
随机推荐
- 4 步缩减 Script Evaluation Time
4 步缩减脚本评估时间 (Script Evaluation Time) https://touch.marfeel.com/resources/blog/reduce-script-evaluati ...
- 实用干货分享 - Oracle数据库RPM部署指南
下载依赖和Oracle19c版本的RPM包 http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-dat ...
- Qt项目升级到Qt6吐血经验总结
Qt的版本发布越来越频繁,Qt6发布已经有一段时间了,越来越多的人咨询之前的代码是否可以增加对Qt6的支持,包括开源的项目QWidgetDemo(一年时间超过2.6K star),近期百忙之中,对所有 ...
- 最近很新的EasyJailbreak😝 A Unified Framework for Jailbreaking Large Language Models🔅
整篇文章短小精悍,原文中的链接很有意思~大家去多多尝试哦!
- Windows Terminal 智能提示
安装PSReadLine Install-Module -Name PSReadLine -AllowClobber -Force 打开$profile notepad $profile 配置补全 在 ...
- preparation
课程知识准备 HTML5基础教程 CSS3基础教程 JavaScript基础教程 HTML DOM基础教程 VUE3基础教程 Element Plus OpenLayers vue3-openlaye ...
- 一个R包—reticulate—在R中调用Python
R语言和python语言是生信行业经常使用的两个计算机语言,R语言具有统计和画图方面的优势,但是R语言在文件读写上的速度实在不敢恭维:Python具有较快的文件读写功能,但是其统计和画图却不如R语言用 ...
- Solution -「LNOI 2022」「洛谷 P8367」盒
\(\mathscr{Desription}\) Link. 有 \(n\) 个盒子排成一排,第 \(i\) 个盒子内有 \(a_i\) 个球.球可以在相邻盒子间传递,\(i\) 与 \(i+ ...
- Idea创建maven项目流程、修改默认配置、及注意事项
这里所演示的环境: windows7+jdk1.7.0_80+tomcat8.5.41+maven3.0.5+idea2017.3.6 1.idea使用指定maven版本 打开idea,使用快捷键ct ...
- Linux系统设置用户密码规则(复杂密码策略)方法
Linux系统下的用户密码的有效期 可以修改密码可以通过login.defs文件控制.设置密码过期期限(默认情况下,用户的密码永不过期.) 编辑 /etc/login.defs 文件,可以设置当前密码 ...