组件化表单解决方案AForm 1.3 发布
v1.3 更新日志
- 输入控件的实现改为实例化模式,同类型多个输入控件在同一个表单不会冲突
- 输入控件实现了继承
- 可以使用AForm.create创建表单,和使用new AForm创建实例的参数和结果一样
- radio类型支持设置“其他”选项,使用needOther:true将额外增加其他选项以及一个文本输入框
- 修复表格无法设置ctrlId的bug
- 表格和fieldset均支持frontalHtml、extHtml和tips选项
- 输入项label的必填星号支持放置在label的前面,使用requireAtBegin为true即可
- 增加off方法,用于解绑一个事件监听处理程序
- 增加one方法,绑定的事件处理程序在执行后将被移除,常用于定义输入控件时在render方法中延迟绑定事件
- schemaMode为local时,支持2层的浅拷贝
- 表格的border默认不设置(此前设置为1),如需设置可以使用attr:{border:1}实现
- 修复schemaMode为local且jtype为Array时render空数据仍当成object渲染的bug
- 其他代码的优化和bug修复
- 若div.json-form-element或div.json=field-plugin设置了ignore属性,则其下所有input均会被忽略
介绍
AForm 是工业级的表单解决方案,它基于声明式编程和模型驱动,做到了大部分工作的自动化,使用AForm,您仅需关心数据模型、数据约束和表单的最终展现,而无需关心表单的实现细节,对于大量使用表单的应用系统来说,AForm可以极大地提高您的生产力。

主要特点
- 声明式,易用,轻量,无依赖,无侵入
- 模型驱动,AForm认为模型即表单,表单即模型,您仅需关心数据模型,而无需关心表单实现细节
- 自动化,支持任意复杂的数据模型生成表单,如嵌套对象,数组
- 一站式,支持输入验证、数据适配、自定义样式、输入插件等几乎与表单相关的所有机制
- 全适配,支持所有浏览器和移动终端,从ie6到html5无缝支持
安装或引用
1) 直接 clone 本仓库 git clone https://github.com/xiehuiqi220/AForm.git
2) 使用 bower bower install aform --save
3) 使用 npm npm install aform --save
4) 直接下载js源文件 aform.js
使用例子
var af = new AForm("target",{
className:"form-horizontal",
fields:{
"name":{label:"姓名"},
"age":{label:"年龄",type:"number"},
"education":{label:"教育经历",fields:{
school:{label:"学校"}
from:{label:"开始时间",type:"date"},
end:{label:"结束时间",type:"date"},
degree:{label:"学位",required:false,type:"select",datalist:["学士","硕士",""]}
}}
}
});
af.render({
"name": 1,
"age": 2,
"education":[{
school:"中国理工大学",from:"2004-9-1",end:"2008-7-1",degree:"学士"
},{
school:"中国文化大学",from:"2008-9-1",end:"2010-7-1",degree:"硕士"
}]
});
console.log(af.getJson());//将输出与渲染数据一致的json结构
文档
联系
任何问题,请提issue https://github.com/xiehuiqi220/AForm/issues ,非休息时间一般可做到一小时内回复
协议
[MIT license]
组件化表单解决方案AForm 1.3 发布的更多相关文章
- react 项目实战(四)组件化表单/表单控件 高阶组件
高阶组件:formProvider 高阶组件就是返回组件的组件(函数) 为什么要通过一个组件去返回另一个组件? 使用高阶组件可以在不修改原组件代码的情况下,修改原组件的行为或增强功能. 我们现在已经有 ...
- 💡我们的表单解决方案 el-form-renderer
前言 本文将介绍我们的表单解决方案 @femessage/el-form-renderer,展示我们在 Vue 技术栈下,我们是如何处理以下问题的: 表单项动态显示或隐藏 表单数据联动 表单输入/输出 ...
- Formily教程 | formily是中后台复杂场景的表单解决方案
前言 formily 不是一个简单的前端轮子.Formily 是一个由阿里巴巴集团多 BU 共建的面向中后台复杂场景的表单解决方案,它也是一个表单框架.它的前身是供应链平台在 2019 年初对外开源的 ...
- Element-ui中为上传组件添加表单校验
vue所依赖的Element的UI库在使用其中的upload组件时,可能很大几率会遇到这个题,需要给upload组件添加表单校验 大家这里直接看代码就可以 <el-form-item class ...
- vue:父子组件间通信,父组件调用子组件方法进行校验子组件的表单
参考: ElementUI多个子组件表单的校验管理:https://www.jianshu.com/p/541d8b18cf95 Vue 子组件调用父组件方法总结:https://juejin.im/ ...
- django系列9--django中的组件(form表单)
modelform整体 from django import forms from app01 import models import hashlib from django.core.except ...
- json化表单数据
/** * josn化表单数据 * @name baidu.form.json * @function * @grammar baidu.form.json(form[, replacer]) * @ ...
- vue 中跨组件的表单验证
使用的是element写的,里面提供了表单验证. 子组件是这样的 <template> <div> <el-form :model="value" r ...
- 组件 layui 表单抓取数据四步走
注意事项: layui 中提交按钮是基于"监听"机制实现的. form.on() 的调用需置于 layui.use 的回调函数中. 末尾的 'return false' 不可或缺, ...
随机推荐
- bzoj : 4504: K个串 区间修改主席树
4504: K个串 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 268 Solved: 110[Submit][Status][Discuss] ...
- Zabbix利用msmtp+mutt发送邮件报警
操作系统:CentOS 7 Web环境:Nginx+MySQL+PHP zabbix版本:zabbix-2.4.8.tar.gz 邮件服务:msmtp-1.4.32.tar.bz2 #http ...
- Memcache PHP 使用笔记
Memcache PHP 使用笔记 最近在做网站迁移 看到之前的一个网站目录下Cache文件里上万的缓存文件真是害怕 新的服务器上配置了memcache扩展 于是乎准备折腾一下看看能不能把之前的文件缓 ...
- array_unshift() 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。
<?php $a=array("a"=>"red","b"=>"green"); array_unsh ...
- Java基础-正则表达式(Regular Expression)语法规则简介
Java基础-正则表达式(Regular Expression)语法规则简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.正则表达式的概念 正则表达式(Regular Exp ...
- bzoj千题计划138:bzoj1432: [ZJOI2009]Function
http://www.lydsy.com/JudgeOnline/problem.php?id=1432 http://blog.sina.com.cn/s/blog_86942b1401014bd2 ...
- Bootstrap简单应用——对首页进行重构
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- Python核心编程——Chapter9
好久没写过Python了,前一阵子忙这忙那的,都几乎把Python给丢掉了,话不多说,马上开始. 9.1.文件过滤.显示一个文件的所有行,并且忽略以井号开头的行. 其实这个题目比较基础,用shell语 ...
- Nginx upstream的5种权重分配方式【转】
原文地址:Nginx upstream的5种权重分配方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight指定轮询几率,weig ...
- HDU 2095 find your present (2) 动态链表
解题报告:输入一个n,后面紧跟着输入n个数,输入的这n个数中,除了有一个数的个数为奇数外,其它的数的个数都是偶数个,现在要你找出这个个数为奇数的这个数. 看起来好像很简单的样子,不过,这题的重点不在这 ...