使用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()的监听对象是 ...
随机推荐
- jmeter接口测试 -- 连接数据库(MySQL)
三个步骤 一.下载MySQL的连接驱动 1.先查看MySQL的版本 1)服务器上查看:mysql --version 2)在连接工具上查看 2.下载连接驱动,下载地址:https://dev.mysq ...
- docker - 将几个目录复制到另一个目录
您如何将多个目录复制到Docker中的目标目录?我不想复制目录内容,而是复制整个目录结构.COPY和ADD命令复制目录内容,展平结构,这是我不想要的.也就是说,如果这些是我的来源: . ├── a │ ...
- Qt开源作品12-硬盘容量控件
一.前言 磁盘容量统计控件,说白了,就是用来统计本地盘符占用的容量,包括但不限于已用空间.剩余空间.总大小.已用百分比等,其中对应的百分比采用进度条显示,该进度条的前景色和背景色及文字颜色可以设置,在 ...
- Qt编写安防视频监控系统29-掉线重连
一.前言 掉线重连在很早很早以前就做了,基本上的方法都是搞个变量存储最后收到图片的时间,然后开个定时器判断,如果不在暂停模式下,当前时间和最后收到图片的时间差值超过了设定的超时时间,比如5s则认为掉线 ...
- vue create与vue init的区别
1.vue ui 图形化界面 2. vue create 是vue-cli3.x的初始化方式,目前模板是固定的,模板选项可自由配置,创建出来的是vue-cli3的项目,与cue-cli2项目结构不同, ...
- kubeadm 快速搭建 Kubernetes 集群
快速搭建 K8s 集群 角色 ip k8s-master-01 192.168.111.170 k8s-node-01 192.168.111.171 k8s-node-02 192.168.111. ...
- w3cschool-Netty 实战精髓篇3
https://www.w3cschool.cn/essential_netty_in_action/essential_netty_in_action-wd1j28dq.html Netty Web ...
- 基于Pamion的流实数仓架构
目录 1. 背景 2. 目标 3. Pamion 的概念和设计 3.1 架构 3.2 统一存储 3.3 基础概念 3.3.1 文件布局 3.3.2 Snapshot 3.3.3 Manifest 文件 ...
- Python 潮流周刊#86:Jupyter Notebook 智能编码助手(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 九集代码深度解析SpringBoot原理:笔记整理
手动注册Tomcat中的servlet容器 子父容器概念