Rumah > hujung hadapan web > tutorial js > vue自动化表单实例分析

vue自动化表单实例分析

不言
Lepaskan: 2018-05-07 14:59:49
asal
1962 orang telah melayarinya

本篇文章通过实例给大家分享了vue自动化表单的操作方法以及相关的代码做了描述,有兴趣的朋友可以跟着学习下。

背景

B端系统表单较多,且表单可能含有较多字段
字段较多的表单带来了大片HTML代码
在大片HTML中,混杂着参数绑定、事件处理等逻辑,不利于维护
技术栈 Vue,Element(默认表单布局)适合中后台项目快速开发

目标

通过json配置快速生成表单的vue plugin。

设计目标

  1. 减少html 重复片段

  2. 表单字段组件可扩展

  3. 事件、联动通过eventbus 解耦

  4. 校验可扩展

  5. 表单布局可自定义

  6. 可视化配置

大概方案设计

使用

安装

1

npm install charlie-autoform charlie-autoform_component_lib

Salin selepas log masuk

源码:https://charlielau.github.io/autoform/#/component/autoform

引入插件

1

2

3

4

5

import AutoForm from 'charlie-autoform';

import AutoForm_component_lib from 'charlie-autoform_component_lib';

 

Vue.use(AutoForm);

Vue.use(AutoForm_component_lib);

Salin selepas log masuk

基本使用

demo.vue

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

<template>

 <p>

  <auto-form ref="tagForm1" :model="model1" :fields="fields1" :layout="layout">

   <el-form-item class="clearfix">

   <el-button type="primary">立即创建</el-button>

   <el-button>取消</el-button>

   </el-form-item>

  </auto-form>

 </p>

</template>

<script>

 export default {

 data() {

  return {

  model2: {

   name: &#39;&#39;,

   type: []

  },

  layout2: {

   align: &#39;left&#39;,

   labelWidth: &#39;100px&#39;,

   custom: false, //是否自定义布局

   inline: true //是否内联

  },

  fields2: [

   {

   key: &#39;name&#39;,

   type: &#39;input&#39;,

   templateOptions: {

    label: &#39;审批人&#39;

   }

   },

   {

   key: &#39;region&#39;,

   type: &#39;select&#39;,

   templateOptions: {

    label: &#39;活动区域&#39;,

    placeholder: &#39;请选择活动区域&#39;,

    options: [

    {

     label: &#39;区域一&#39;,

     value: &#39;shanghai&#39;

    },

    {

     label: &#39;区域二&#39;,

     value: &#39;beijing&#39;

    }

    ],

    validators:[ //校验

    // {required:true,message:&#39;必填&#39;}

    // ""

    ]

   }

   }

  ]

  };

 }

 };

</script>

Salin selepas log masuk

最终效果

添加自定义组件或者组件目录

1

2

Vue.$autoform.RegisterDir(()=>require.context(&#39;./components/autoform&#39;, &#39;c&#39;));//目录

Vue.$autoform.Register(Vue,[Components...],{prefix: "c"}) //组件对象

Salin selepas log masuk

cHello.vue

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

// PATH:/components/autoform/cHello.vue

<template>

 <p>

  <p>

   <p>基本的变量可以通过"mixins"获取,这里有开发组件需要的一些变量</p>

   <p>自定义子组件:Hello</p>

   <p>当前field: {{field}}</p>

   <p>整个model: {{model}}</p>

   <p>当前model: {{model[field.name]}}</p>

   <p>layout: {{layout}}</p>

   <p>字段相关配置to: {{to}}</p>

  </p>

 </p>

</template>

 

<script>

 import {baseField} from "charlie-autoform";

 export default {

  mixins: [baseField],

  name: &#39;cHello&#39;,

  data () {

   return {};

  },

  methods: {},

  mounted(){

   //this.eventBus 事件总线

  }

 };

</script>

Salin selepas log masuk

成果

目前应用再多个系统

定性: 维护成本降低、关注点分离
定量:表单开发效率提升50%

相关推荐:

Vue表单类的父子组件数据传递示例

Atas ialah kandungan terperinci vue自动化表单实例分析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan