如何封装一个带表单验证的 Vue的表单插件(二):功能开发

接下来,我们开始完整的功能开发

目录结构

目录结构

整体目录结构如上图所示

  • src/components 项目的业务组件/页面
  • src/base form表单组件
  • src/mixins 混入相关的内容放在这个文件夹(dispatch、capture方法)

form表单之 input组件

首先我们先看看input.vue文件的内容:

<template>
  <input :type="type" :placeholder="placeholder" :value="currentValue" @input="inputChange">
</template>
<script>
import Emitter from '@/mixins/emitter'
export default {
  mixins: [Emitter],
  name: 'w-input',
  props: {
    value: {
      type: String,
      default: ''
    },
    placeholder: {
      type: String,
      default: ''
    },
    type: {
      type: String,
      default: 'text'
    }
  },
  data () {
    return {
      currentValue: this.value
    }
  },
  methods: {
   inputBlur () {
      this.dispatch('form-item', 'on-input-blur', this.currentValue)
    },
    inputChange (e) {
      this.currentValue = e.target.value
      this.$emit('input', this.currentValue)
      // 如果单需要在输入事件input的时候就开始校验 增加下面语句
      this.dispatch('form-item', 'on-input-input', this.currentValue)
    }
  }
}

我们的稍作分析:

  • props我们接受三个属性 value(输入框的值)、 type(input的type值,可配password、email等)、placeholder(占位内容)
  • data里面定义一个currentValue,默认值为props中传入的value,之所以要定义这个值,是因为不能直接修改props中的值,所以输入框的value我们用currentValue填充
  • methods里面有两个事件 输入框的input事件(实时更新数据,添加表单校验的触发事件)和blur事件(添加表单校验的触发事件)
    this.$emit('input', this.currentValue) 这句代码是自定义组件使用v-model双向数据绑定的语法,不了解的小伙伴可以查看Vue的官方文档 自定义组件上面使用v-model 或者我自己写的 v-model详解

form表单之 form-item组件

接下来我们查看 form-item组件代码:

<template>
  <di
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值