vue 动态表单开发方法案例详解


Posted in Javascript onDecember 02, 2019

本文实例讲述了vue 动态表单开发方法。分享给大家供大家参考,具体如下:

概要

动态表单指的是我们的表单不是通过vue 组件一个个编写的,我们的表单是根据后端生成的vue模板,在前端通过vue构建出来的。主要的思路是,在后端生成vue的模板,前端通过ajax的方式加载后端的表单模板,权限数据和表单数据,在前端使用vue进行构建出来。

vue 动态表单开发方法案例详解

表单渲染过程。

实现步骤

1.在前端开发表单组件,比如用户组件,文本输入组件。

在平台中我们可以看到我们开发的组件。

vue 动态表单开发方法案例详解

组件的开发在第三篇有介绍。

我们定义的组件和后台配置的权限相关。

我们每个组件都定义了:

  • permission: 权限对象
  • permissionkey:权限对应的key

2.手机端模板代码

手机端模板是通过表单BO元数据生成的,我们可以在后端编辑手机端模板,我们现在看一下简单的手机表单VUE的模板。

<script>// 表单公式计算
var formulas_2400000001371061={};
// 表单日期计算
var dateCalcs_2400000001371061={};
//实体扩展JSON
var extJson_2400000001371061={};
//验证规则
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>

这个表单中:

我们可以看到我们自定义的组件,包括数据,权限部分,验证规则部分。

3.后端提供的数据部分。

我们可以看下后端提供的数据:

[{
    "result": true,
    "msg": "",
    "type": "",
    "formKey": "simpleform",
    "content": "<script>// 表单公式计算\r\nvar formulas_2400000001371061={};\r\n// 表单日期计算\r\nvar dateCalcs_2400000001371061={};\r\n//实体扩展JSON\r\nvar extJson_2400000001371061={};\r\n//验证规则\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": {}
  }]

这里看到后端返回的数据主要包括:

  • content :表单内容
  • permission:表单权限
  • jsonData:表单数据

4.通过vue 将表单进行渲染

步骤:

1.将html放到容器中。

2.使用vue 将数据和模版渲染到容器中。

vue 动态表单开发方法案例详解

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
jscript之Read an Excel Spreadsheet
Jun 13 Javascript
IE与firefox下Dhtml的一些区别小结
Dec 02 Javascript
append和appendTo的区别以及appendChild用法
Dec 24 Javascript
jquery获取选中的文本和值的方法
Jul 08 Javascript
js实现九宫格图片半透明渐显特效的方法
Feb 16 Javascript
解决JS无法调用Controller问题的方法
Dec 31 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
Apr 17 Javascript
Vue.js中数组变动的检测详解
Oct 12 Javascript
深入理解vue路由的使用
Mar 24 Javascript
AngularJS动态菜单操作指令
Apr 25 Javascript
Vue响应式原理深入解析及注意事项
Dec 11 Javascript
浅谈js中的attributes和Attribute的用法与区别
Jul 16 Javascript
vue 开发之路由配置方法详解
Dec 02 #Javascript
vue 开发企业微信整合案例分析
Dec 02 #Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 #Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 #Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 #Javascript
angular8和ngrx8结合使用的步骤介绍
Dec 01 #Javascript
angular异步验证防抖踩坑实录
Dec 01 #Javascript
You might like
如何获得PHP相关资料
2006/10/09 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
实例讲解php数据访问
2016/05/09 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
详解React 元素渲染
2020/07/07 Javascript
python实现socket客户端和服务端简单示例
2014/02/24 Python
Python的动态重新封装的教程
2015/04/11 Python
python中global用法实例分析
2015/04/30 Python
用Python编写简单的定时器的方法
2015/05/02 Python
Python实现购物车功能的方法分析
2017/11/10 Python
python构建深度神经网络(续)
2018/03/10 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
大学生学习生活的自我评价
2013/11/01 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
Node.js实现断点续传
2021/06/23 Javascript
Go语言应该什么情况使用指针
2021/07/25 Golang