功能:通过后台数据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初阶使用+获取表单值相关推荐

  1. javascript获取表单值的7种方式

    见代码: <!doctype html> <html lang="en"> <head><meta charset="UTF-8 ...

  2. JQ手册 JQ方法大全 jq获取表单值与赋值代码 50个JQ的例子

    http://hemin.cn/jq/index.html http://www.365mini.com/page/jquery-jquery.htm JQ方法大全http://wenku.baidu ...

  3. 利用反射,泛型,静态方法快速获取表单值到Model。

    初级的,很简单,牛人可以不看了.不过还算实用. 在项目中经常需要处理表单,给model赋值,很烦人的一些重复代码.如下边的代码: Code             News news = new Ne ...

  4. PHP获取表单值--同时获取下拉框的Value和Text值

    同时获取下拉框的Value和Text值的解决办法: 添加一个<p>标签,用户选中一项后就将该项的Text赋值给他 然后接受页面获取该P变迁即可获取到相应的Text值 表单填写页面: [ht ...

  5. form表单input使用disabled后提交不能获取表单值的解决方法

    今天遇到一个问题:在form表单中的input上使用disabled禁用标致,会导致表单提交时获取不到值.经过调试,以及参考相关博文,最终得以解决,下面记录解决方法. form表单输入框input设置 ...

  6. 如何给FormPanel表单中的元素赋值以及获取表单元素值

    1.定义表单元素的name属性如下 var HLV = new Ext.form.TextField({fieldLabel: '汇率',name:'EXCHANGERATE',anchor: '30 ...

  7. 数据结构初阶(4)(OJ练习【判断链表中是否有环、返回链表入口点、删除链表中的所有重复出现的元素】、双向链表LinkedList【注意事项、构造方法、常用方法、模拟实现、遍历方法、顺序表和链表的区别)

    接上次博客:数据结构初阶(3)(链表:链表的基本概念.链表的类型.单向不带头非循环链表的实现.链表的相关OJ练习.链表的优缺点 )_di-Dora的博客-CSDN博客 目录 OJ练习 双向链表--Li ...

  8. MySQL初阶 - 易错知识点整理(待更新)

    MySQL初阶 - 易错知识点整理(待更新) Note:这里根据 CSDN Mysql技能树 整理的易错题,可参考MySQL 有这一篇就够,MySQL详细学习教程(建议收藏),MySQL 菜鸟教程 文 ...

  9. 《JavaEE初阶》HTTP协议和HTTPS

    <JavaEE初阶>HTTP协议和HTTPS 文章目录 <JavaEE初阶>HTTP协议和HTTPS HTTP协议是应用层协议: 使用Fiddler抓取HTTP请求和响应: F ...

最新文章

  1. Digital Signage and Windows Embedded Standard 7
  2. 【干货】原生js做的一维数组对象,二维数组对象的模糊查询(前端网备份)...
  3. 计算道路超高lisp_5G+AI超高清智能视频监控将迎来增长期
  4. 【计网】计算机网络-物理层【理论1-2】
  5. “小会话,大学问” - 如何让聊天机器人读懂对话历史?| 论文访谈间 #03
  6. 函数sigsuspend
  7. 循环,函数,指针作业
  8. Linus 07年在 Google讲座介绍Git的特点和设计思路
  9. java web 启动顺序_JavaWeb开发Servlet过滤器链执行顺序详解
  10. Zookeeper基础简介
  11. [技术帖] js中,双引号,引发的问题
  12. MATLAB实现智能优化算法
  13. vimgrep 查找光标下单词并打开quickfix
  14. Ubuntu下搜狗拼音突然无法输入中文的解决办法
  15. python计算增长率函数_python – 基于增长率优化值的迭代计算
  16. inflate方法的用法
  17. 团队作业第二次—项目选题报告
  18. 阿里云对运营10多年来持续最久的故障发布复盘说明
  19. OAI 5G NR搭建gNB和UE(更新中)
  20. selenium模拟浏览器解决反监测,获取cookies解决登录问题

热门文章

  1. Linux书签(02)用linux top命令自行监测和分析服务器CPU、内存、进程等性能
  2. 程序员的台式机组建之路
  3. gstreamer 的 elements
  4. form表单标签的enctype属性的作用
  5. 云终端ncomputingl300服务器,NComputing L300云终端在局域网下升级的设置操作
  6. 推荐一些嵌入式、C/C++的开源库和项目
  7. JVM之GC常用配置参数
  8. 北京联通100M光纤宽带需邀请函 实际速率12MB/S - OFweek光通讯网
  9. HTML正式学习--前奏
  10. 计算机视觉——bow图像检索