具備數據收集、校驗和提交功能的表單生成器,支持雙向數據綁定和事件擴展,組件包含有複選框、單選框、輸入框、下拉選擇框等表單元素以及省市區三級聯動,時間選擇,日期選擇,顏色選擇,滑塊,評分,框架,樹型,文件/圖片上傳等功能組件。css
1.4.5版本已支持 iview3
Github | Gitee | Npm | form-create 文檔html
npm install form-create
ORvue
git clone https://github.com/xaboy/form-create.git cd form-create npm install
npm run dev
ORgit
雙擊打開 demo/index.html
github
瀏覽器:shell
<!-- import Vue 2.5--> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.min.js"></script> <!-- import iview 2.14.3--> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/iview@2.14.3/dist/styles/iview.css"> <script src="https://cdn.jsdelivr.net/npm/iview@2.14.3/dist/iview.min.js"></script> <!-- 省市區三級聯動json數據,不使用三級聯動不須要引入 --> <script src="district/province_city_area.js"></script> <!-- 模擬數據,實際使用中不須要引入 --> <script src="demo/mock.js"></script> <!-- import formCreate --> <script src="dist/form-create.min.js"></script>
NodeJs:npm
import Vue from 'vue'; import iView from 'iview'; import 'iview/dist/styles/iview.css'; import formCreat from 'form-create' //三級聯動數據,不用能夠不引入 import 'form-create/district/province_city_area.js' //示例規則,實際使用中不須要引入 import 'form-create/mock.js' Vue.use(iView); Vue.use(formCreat)
使用 maker 生成器生成: demojson
使用 json 生成: demoapi
各組件生成: demo瀏覽器
說明:
mock() 爲表單生成規則 root 爲表單插入節點 $f 爲表單實例
標籤模式下 rule
規則發生變化會實時動態渲染表單
<div id="app1"> <form-create ref="fc" :rule="rule" :option="option"></form-create> </div>
let rules = mock(); new Vue({ el:'#app1', data:{ //表單生成規則 rule:rules, //組件參數配置 option:{ //顯示錶單重置按鈕 resetBtn:true, //表單提交事件 onSubmit:function (formData) { //formData爲表單數據 //按鈕進入提交狀態 this.$f.btn.loading(); //重置按鈕禁用 this.$f.resetBtn.disabled(); //重置按鈕恢復正常 //this.$f.resetBtn.disabled(); //按鈕進入可點擊狀態 //this.$f.btn.loading(false); } }, //初始化變量 $f: {}, model: {} }, mounted:function () { //獲取表單api this.$f = this.$refs.fc.$f; //獲取雙向數據綁定的數據規則 this.model = this.$f.model(); } });
<div id="app2"> <div id="form-create"></div> </div>
let rules = mock(); new Vue({ el:'#app2', data:{ //初始化變量 $f:{}, model:{} }, mounted:function () { //表單插入的節點 const root = document.getElementById('form-create'); //$f爲表單api this.$f = this.$formCreate( //表單生成規則 rules, //組件參數配置 { el:root, //顯示錶單重置按鈕 resetBtn:true, //表單提交事件 onSubmit:function (formData) { //formData爲表單數據 //按鈕進入提交狀態 this.$f.btn.loading(); //重置按鈕禁用 this.$f.resetBtn.disabled(); //重置按鈕恢復正常 //this.$f.resetBtn.disabled(); //按鈕進入可點擊狀態 //this.$f.btn.loading(false); } }); //獲取雙向數據綁定的數據規則 this.model = this.$f.model(); } })
<div id="app3"> <div id="form-create"></div> </div>
//表單插入的節點 var root = document.getElementById('form-create'),rules = mock(); //初始化變量 var $f = {},model = {}; //$f爲表單api $f = window.formCreate( //表單生成規則 rules, //組件參數配置 { el:root, //顯示錶單重置按鈕 resetBtn:true, //表單提交事件 onSubmit:function (formData) { //formData爲表單數據 //按鈕進入提交狀態 $f.btn.loading(); //重置按鈕禁用 $f.resetBtn.disabled(); //重置按鈕恢復正常 //$f.resetBtn.disabled(); //按鈕進入可點擊狀態 //$f.btn.loading(false); } }); //獲取雙向數據綁定的數據規則 model = $f.model();