vue2+amis初阶使用+获取表单值
功能:通过后台数据json实时更换表格,确实amis是不错的选择,但是基于react…
第一种方法
yarn add amis@1.9.0
同时需要安装typescript react vuera react-dom copy-to-clipboard (后两个好像后续没用到了,但是之前测试的时候我安装了,react安装17.0.0版本)
vue需要使用的文件中:
<divref="box"style="text-align: center; font-size: 24px; font-weight: 700; margin-bottom: 20px">基本信息</div>
mounted() {let amis = amisRequire('amis/embed')let amisScoped = amis.embed(this.$refs.box, {type: 'page',title: '表单页面',body: {type: 'form',mode: 'horizontal',api: '/saveForm',body: [{label: 'Name',type: 'input-text',name: 'name'},{label: 'Email',type: 'input-email',name: 'email'}]}})
}
如果你全局没有碰到无法拿到amisRequire可以直接在main.js引入:
import 'amis/sdk/sdk'
import 'amis/sdk/sdk.css'
import 'amis/sdk/iconfont.css'
import 'amis/sdk/helper.css'
如果你碰见了拿不到值得情况,死方法,将node_modules的amis的文件夹sdk拿出来放在Public文件下,这里我们将sdk文件夹改名成了amis:
然后在Index.html中引入:
然后就有效果出来了:
获取表单信息:
let amisScoped = amis.embed(this.$refs.box, {//我们的json})
然后通过amisScoped.getComponentByName(‘page1.form1’).getValues()
获取,这里如果写在mounted里面获取不到,button点击事件中可以获取到
:)能有更好的方法建议不用,主要是领导非要我用,吐槽一下,坑的要死,花了一天时间,网上只有vue3+amis。
这里还有一篇github上面的别人写好的demo,但是版本比较低,我用起来也是各种踩坑,react冲突不定义之类的问题:
https://github.com/FatDong1/amis-admin
第二种方法
直接将react转换vue(vuera)
react 16.14.0
react-dom16.14.0
amis 1.9.0
vuera 0.2.7
直接copy官网react demo 创建一个新的文件AMISComponent.js
import React from 'react'
import axios from 'axios'
import copy from 'copy-to-clipboard'import { render as renderAmis } from 'amis'
import { toast } from 'amis/lib/components/Toast'
import 'amis/lib/themes/default.css'const env = {// 下面三个接口必须实现fetcher: ({ url, method, data, responseType, config, headers }) => {config = config || {}config.withCredentials = trueresponseType && (config.responseType = responseType)if (config.cancelExecutor) {config.cancelToken = new axios.CancelToken(config.cancelExecutor)}config.headers = headers || {}if (method !== 'post' && method !== 'put' && method !== 'patch') {if (data) {config.params = data}return axios[method](url, config)} else if (data && data instanceof FormData) {config.headers = config.headers || {}config.headers['Content-Type'] = 'multipart/form-data'} else if (data &&typeof data !== 'string' &&!(data instanceof Blob) &&!(data instanceof ArrayBuffer)) {data = JSON.stringify(data)config.headers = config.headers || {}config.headers['Content-Type'] = 'application/json'}return axios[method](url, data, config)},isCancel: (value) => axios.isCancel(value),copy: (content) => {copy(content)toast.success('内容已复制到粘贴板')}
}class AMISComponent extends React.Component {constructor(props) {super(props)console.log('props: ', props)}render() {return renderAmis(// 这里是 amis 的 Json 配置。this.props.schema,{// props...},env)}
}export default AMISComponent
引入:
schema数据:
schema: {type: 'page',body: {type: 'form',api: '/api/form',body: [{type: 'input-text',name: 'name',label: '姓名:'},{name: 'email',type: 'input-email',label: '邮箱:'}]}}
获取表单信息:
在js文件中添加:
这里的ref就相当于amisScoped
然后相当于父子传值拿到ref,按钮点击触发获取值
amis表单change事件实时获取表单数据
{type: 'page',name: 'page2',body: {type: 'form',name: 'form3',onEvent: {change: {actions: [{actionType: 'custom',script: 'console.log(event)'}]}},// submitOnChange: true,body: [{label: 'Name',type: 'input-text',name: 'name1'},{label: 'age',type: 'input-text',name: 'name2'}]}}
这里我们加入event事件,onchange监听,使用custom,然后将js写在script里面就可以获取change改变时候得数据,这里注意事件版本要求1.7.0+
vue2 data()this指向问题解决方案:
网上百度的各种方法真是各种奇葩
因为这里我们使用的是vue,数据里面如果需要使用this,是拿不到的,这里我们可以使用箭头函数更改this指向:
vue2+amis初阶使用+获取表单值相关推荐
- javascript获取表单值的7种方式
见代码: <!doctype html> <html lang="en"> <head><meta charset="UTF-8 ...
- JQ手册 JQ方法大全 jq获取表单值与赋值代码 50个JQ的例子
http://hemin.cn/jq/index.html http://www.365mini.com/page/jquery-jquery.htm JQ方法大全http://wenku.baidu ...
- 利用反射,泛型,静态方法快速获取表单值到Model。
初级的,很简单,牛人可以不看了.不过还算实用. 在项目中经常需要处理表单,给model赋值,很烦人的一些重复代码.如下边的代码: Code News news = new Ne ...
- PHP获取表单值--同时获取下拉框的Value和Text值
同时获取下拉框的Value和Text值的解决办法: 添加一个<p>标签,用户选中一项后就将该项的Text赋值给他 然后接受页面获取该P变迁即可获取到相应的Text值 表单填写页面: [ht ...
- form表单input使用disabled后提交不能获取表单值的解决方法
今天遇到一个问题:在form表单中的input上使用disabled禁用标致,会导致表单提交时获取不到值.经过调试,以及参考相关博文,最终得以解决,下面记录解决方法. form表单输入框input设置 ...
- 如何给FormPanel表单中的元素赋值以及获取表单元素值
1.定义表单元素的name属性如下 var HLV = new Ext.form.TextField({fieldLabel: '汇率',name:'EXCHANGERATE',anchor: '30 ...
- 数据结构初阶(4)(OJ练习【判断链表中是否有环、返回链表入口点、删除链表中的所有重复出现的元素】、双向链表LinkedList【注意事项、构造方法、常用方法、模拟实现、遍历方法、顺序表和链表的区别)
接上次博客:数据结构初阶(3)(链表:链表的基本概念.链表的类型.单向不带头非循环链表的实现.链表的相关OJ练习.链表的优缺点 )_di-Dora的博客-CSDN博客 目录 OJ练习 双向链表--Li ...
- MySQL初阶 - 易错知识点整理(待更新)
MySQL初阶 - 易错知识点整理(待更新) Note:这里根据 CSDN Mysql技能树 整理的易错题,可参考MySQL 有这一篇就够,MySQL详细学习教程(建议收藏),MySQL 菜鸟教程 文 ...
- 《JavaEE初阶》HTTP协议和HTTPS
<JavaEE初阶>HTTP协议和HTTPS 文章目录 <JavaEE初阶>HTTP协议和HTTPS HTTP协议是应用层协议: 使用Fiddler抓取HTTP请求和响应: F ...
最新文章
- Digital Signage and Windows Embedded Standard 7
- 【干货】原生js做的一维数组对象,二维数组对象的模糊查询(前端网备份)...
- 计算道路超高lisp_5G+AI超高清智能视频监控将迎来增长期
- 【计网】计算机网络-物理层【理论1-2】
- “小会话,大学问” - 如何让聊天机器人读懂对话历史?| 论文访谈间 #03
- 函数sigsuspend
- 循环,函数,指针作业
- Linus 07年在 Google讲座介绍Git的特点和设计思路
- java web 启动顺序_JavaWeb开发Servlet过滤器链执行顺序详解
- Zookeeper基础简介
- [技术帖] js中,双引号,引发的问题
- MATLAB实现智能优化算法
- vimgrep 查找光标下单词并打开quickfix
- Ubuntu下搜狗拼音突然无法输入中文的解决办法
- python计算增长率函数_python – 基于增长率优化值的迭代计算
- inflate方法的用法
- 团队作业第二次—项目选题报告
- 阿里云对运营10多年来持续最久的故障发布复盘说明
- OAI 5G NR搭建gNB和UE(更新中)
- selenium模拟浏览器解决反监测,获取cookies解决登录问题