使用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()的监听对象是 ...
随机推荐
- Qt编写地图综合应用43-点聚合
一.前言 点聚合的出现就是为了减少一个可视区域内,密密麻麻绘制的太多的标注点.在地图上查询结果通常以标记点的形式展现,但是如果标记点较多,不仅会大大增加客户端的渲染时间,让客户端变得很卡,而且会让人产 ...
- Qt自定义控件集成到全平台QtCreator效果图
- Qt开源作品23-颜色拾取器
一.前言 在做很多项目的UI界面的时候,相信绝大部分人都有过抄袭别人的UI界面尤其是颜色的时候,毕竟十个程序员九个没有审美,或者说审美跟一坨屎一样,大家主要的精力以及擅长点都是在写功能实现具体功能上面 ...
- [转]C#的二进制文件操作及关于Encoding类与汉字编码转换的问题
1.数值应保存在二进制文件 首先列举文本.二进制文件的操作(读写)方法: 方式1: //文本文件操作:创建/读取/拷贝/删除 using System; using System.IO; class ...
- 百度高效研发实战训练营-Step3
.# 百度高效研发实战训练营-Step3 3.1 质量意识 关于本部分,将从以下几点进行介绍: 3.1.1 质量的基本概念 意识的树立,源于认识的提高. 首先介绍质量的基本概念,主要包括以下内容: 1 ...
- neo4j-图数据库
neo4j是图数据库 初识neo4j,首先我们要知道neo4j是图数据库.我们平常用的数据库一般是RDBMS(关系型数据库),那么什么是图数据库呢?既然有了关系型数据库,那么为什么要有图数据库呢? 1 ...
- Word文档转换成Html格式
CentOS 下安装 OpenOffice4.0 一.更新服务器 yum源 [root@APP2 /]# yum clean all [root@APP2 /]# yum makecache [roo ...
- Zookeeper的原理和架构设计,以及应用场景
什么是 Zookeeper Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如: 统一命名服务 状态同步服务 集群 ...
- 【Netty】(5)-源码 Bootstrap
[Netty]5 源码 Bootstrap 上一篇讲了AbstractBootstrap,为这篇做了个铺垫. 一.概述 Bootstrap 是 Netty 提供的一个便利的工厂类, 我们可以通过它来完 ...
- 利用bash脚本函数执行创建用户和组,并设置sudo权限等
示例:利用bash脚本函数执行创建用户和组,并设置sudo权限等: Linux服务器设置历史命令记录,及命令执行的时间: sudo echo 'HISTTIMEFORMAT="%F %T w ...