vue 動(dòng)態(tài)表單開發(fā)方法案例詳解
本文實(shí)例講述了vue 動(dòng)態(tài)表單開發(fā)方法。分享給大家供大家參考,具體如下:
概要
動(dòng)態(tài)表單指的是我們的表單不是通過vue 組件一個(gè)個(gè)編寫的,我們的表單是根據(jù)后端生成的vue模板,在前端通過vue構(gòu)建出來的。主要的思路是,在后端生成vue的模板,前端通過ajax的方式加載后端的表單模板,權(quán)限數(shù)據(jù)和表單數(shù)據(jù),在前端使用vue進(jìn)行構(gòu)建出來。
表單渲染過程。
實(shí)現(xiàn)步驟
1.在前端開發(fā)表單組件,比如用戶組件,文本輸入組件。
在平臺(tái)中我們可以看到我們開發(fā)的組件。
組件的開發(fā)在第三篇有介紹。
我們定義的組件和后臺(tái)配置的權(quán)限相關(guān)。
我們每個(gè)組件都定義了:
- permission: 權(quán)限對(duì)象
- permissionkey:權(quán)限對(duì)應(yīng)的key
2.手機(jī)端模板代碼
手機(jī)端模板是通過表單BO元數(shù)據(jù)生成的,我們可以在后端編輯手機(jī)端模板,我們現(xiàn)在看一下簡單的手機(jī)表單VUE的模板。
<script>// 表單公式計(jì)算 var formulas_2400000001371061={}; // 表單日期計(jì)算 var dateCalcs_2400000001371061={}; //實(shí)體擴(kuò)展JSON var extJson_2400000001371061={}; //驗(yàn)證規(guī)則 var validRule_2400000001371061={"main":{"age":{"vtype":"length:50"},"name":{"vtype":"length:50"},"mobile":{"vtype":"length:50"}}};</script> <yd-popup v-model="showUserDialog" position="center" width="100%"> <rx-sysuser :single="singleUser" ref="sysUser" v-on:ok="selectUser" v-on:cancel="closeUserDialog()"></rx-sysuser> </yd-popup> <yd-popup v-model="showGroupDialog" position="center" width="100%"> <rx-sysgroup :single="singleGroup" ref="sysGroup" v-on:ok="selectGroup" v-on:cancel="closeGroupDialog()"></rx-sysgroup> </yd-popup> <div class="div-form"> <div class="caption"> simpleform </div> <div class="form-container"> <div class="form"> <div class="form-title"> name </div> <div class="form-input"> <rx-input v-model="data.name" permissionkey="name" vtype="length:50" :readonly="readonly" :permission="permission.main"></rx-input> </div> </div> <div class="form"> <div class="form-title"> age </div> <div class="form-input"> <rx-input v-model="data.age" permissionkey="age" vtype="length:50" :readonly="readonly" :permission="permission.main"></rx-input> </div> </div> <div class="form"> <div class="form-title"> mobile </div> <div class="form-input"> <rx-input v-model="data.mobile" permissionkey="mobile" vtype="length:50" :readonly="readonly" :permission="permission.main"></rx-input> </div> </div> </div> </div>
這個(gè)表單中:
我們可以看到我們自定義的組件,包括數(shù)據(jù),權(quán)限部分,驗(yàn)證規(guī)則部分。
3.后端提供的數(shù)據(jù)部分。
我們可以看下后端提供的數(shù)據(jù):
[{ "result": true, "msg": "", "type": "", "formKey": "simpleform", "content": "<script>// 表單公式計(jì)算\r\nvar formulas_2400000001371061={};\r\n// 表單日期計(jì)算\r\nvar dateCalcs_2400000001371061={};\r\n//實(shí)體擴(kuò)展JSON\r\nvar extJson_2400000001371061={};\r\n//驗(yàn)證規(guī)則\r\nvar validRule_2400000001371061={\"main\":{\"age\":{\"vtype\":\"length:50\"},\"name\":{\"vtype\":\"length:50\"},\"mobile\":{\"vtype\":\"length:50\"}}};</script><yd-popup v-model=\"showUserDialog\" position=\"center\" width=\"100%\"><rx-sysuser :single=\"singleUser\" ref=\"sysUser\" v-on:ok=\"selectUser\" v-on:cancel=\"closeUserDialog()\"></rx-sysuser></yd-popup><yd-popup v-model=\"showGroupDialog\" position=\"center\" width=\"100%\"><rx-sysgroup :single=\"singleGroup\" ref=\"sysGroup\" v-on:ok=\"selectGroup\" v-on:cancel=\"closeGroupDialog()\"></rx-sysgroup></yd-popup><div class=\"div-form\">\r\n\t<div class=\"caption\">simpleform</div>\r\n\t<div class=\"form-container\">\r\n\t\t\t<div class=\"form\">\r\n\t\t\t\t<div class=\"form-title\">\r\n\t\t\t\t\tname\t\t\t\t</div>\r\n\t\t\t\t<div class=\"form-input\">\r\n\t\r\n\t\t\t\t<rx-input v-model=\"data.name\" permissionkey=\"name_form\" vtype=\"length:50\" :readonly=\"readonly\" :permission=\"permission.main\"></rx-input>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"form\">\r\n\t\t\t\t<div class=\"form-title\">\r\n\t\t\t\t\tage\t\t\t\t</div>\r\n\t\t\t\t<div class=\"form-input\">\r\n\t\r\n\t\t\t\t<rx-input v-model=\"data.age\" permissionkey=\"age_form\" vtype=\"length:50\" :readonly=\"readonly\" :permission=\"permission.main\"></rx-input>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"form\">\r\n\t\t\t\t<div class=\"form-title\">\r\n\t\t\t\t\tmobile\t\t\t\t</div>\r\n\t\t\t\t<div class=\"form-input\">\r\n\t\r\n\t\t\t\t<rx-input v-model=\"data.mobile\" permissionkey=\"mobile_form\" vtype=\"length:50\" :readonly=\"readonly\" :permission=\"permission.main\"></rx-input>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t</div></div>\r\n\t", "permission": "{\"main\":{\"age\":{\"require\":false,\"right\":\"w\"},\"name\":{\"require\":false,\"right\":\"w\"},\"mobile\":{\"require\":false,\"right\":\"w\"}}}", "jsonData": { "age": "", "name": "", "mobile": "" }, "description": "simpleform", "viewId": "2400000001371078", "boDefId": "2400000001371061", "timeStamp": "1523799818000", "params": {} }]
這里看到后端返回的數(shù)據(jù)主要包括:
- content :表單內(nèi)容
- permission:表單權(quán)限
- jsonData:表單數(shù)據(jù)
4.通過vue 將表單進(jìn)行渲染
步驟:
1.將html放到容器中。
2.使用vue 將數(shù)據(jù)和模版渲染到容器中。
希望本文所述對(duì)大家vue.js程序設(shè)計(jì)有所幫助。
- vue2 中如何實(shí)現(xiàn)動(dòng)態(tài)表單增刪改查實(shí)例
- 基于Vue+elementUI實(shí)現(xiàn)動(dòng)態(tài)表單的校驗(yàn)功能(根據(jù)條件動(dòng)態(tài)切換校驗(yàn)格式)
- vue構(gòu)建動(dòng)態(tài)表單的方法示例
- 詳解Vue+Element的動(dòng)態(tài)表單,動(dòng)態(tài)表格(后端發(fā)送配置,前端動(dòng)態(tài)生成)
- 策略模式實(shí)現(xiàn) Vue 動(dòng)態(tài)表單驗(yàn)證的方法
- 使用Vue生成動(dòng)態(tài)表單
- 使用Vue動(dòng)態(tài)生成form表單的實(shí)例代碼
- vue中動(dòng)態(tài)綁定表單元素的屬性方法
- vue element動(dòng)態(tài)渲染、移除表單并添加驗(yàn)證的實(shí)現(xiàn)
- Vue+Element實(shí)現(xiàn)動(dòng)態(tài)生成新表單并添加驗(yàn)證功能
- Vue form表單動(dòng)態(tài)添加組件實(shí)戰(zhàn)案例
相關(guān)文章
Vue 解決多級(jí)動(dòng)態(tài)面包屑導(dǎo)航的問題
今天小編就為大家分享一篇Vue 解決多級(jí)動(dòng)態(tài)面包屑導(dǎo)航的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11使用vue-cli創(chuàng)建vue2項(xiàng)目的實(shí)戰(zhàn)步驟詳解
相信大部分Vue開發(fā)者都使用過vue-cli來構(gòu)建項(xiàng)目,它的確很方便,但對(duì)于很多初級(jí)開發(fā)者來說,還是要踩不少坑的,下面這篇文章主要給大家介紹了關(guān)于使用vue-cli創(chuàng)建vue2項(xiàng)目的實(shí)戰(zhàn)步驟,需要的朋友可以參考下2023-01-01解決Vue2?axios發(fā)請(qǐng)求報(bào)400錯(cuò)誤"Error:?Request?failed?with?s
這篇文章主要給大家介紹了關(guān)于如何解決Vue2?axios發(fā)請(qǐng)求報(bào)400錯(cuò)誤"Error:?Request?failed?with?status?code?400"的相關(guān)資料,在Vue應(yīng)用程序中我們通常會(huì)使用axios作為網(wǎng)絡(luò)請(qǐng)求庫,需要的朋友可以參考下2023-07-07vue實(shí)現(xiàn)分環(huán)境打包步驟(給不同的環(huán)境配置相對(duì)應(yīng)的打包命令)
這篇文章主要介紹了vue實(shí)現(xiàn)分環(huán)境打包步驟(給不同的環(huán)境配置相對(duì)應(yīng)的打包命令),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06vue中props賦值給data出現(xiàn)的問題及解決
這篇文章主要介紹了vue中props賦值給data出現(xiàn)的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10