国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Vue循環(huán)組件加validate多表單驗證的實例

2019-11-19 12:54:58
字體:
供稿:網(wǎng)友

*父父組件(helloWorld.vue):

<template> <div class="hello-world">  <el-button type="text" @click="saveAll" class="button">SAVE</el-button>  <promise-father ref="promiseFather"></promise-father> </div></template><script>import PromiseFather from './promiseFather'export default { name: `HelloWorld`, components: { PromiseFather }, data () {  return {   promiseFather: ''  } }, methods: {  saveAll () {   this.$refs.promiseFather.validate(valid => {    if (valid) {     this.$message.success('(^o^)~ 驗證成功!')    } else {     this.$message.error('-_- 驗證失敗!')    }   })  } }}</script><style scoped> .button {  position: absolute;  top: 60px;  left: 660px; }</style>

*父組件(promiseFather.vue):

<template> <div class="promise-father">  <h2>{{ title }}   <el-button type="text" @click="add" class="button">添加</el-button>  </h2>  <div v-for="(item, index) in validateSet" :key="item.id">   <promise-child ref="promiseChild" :formData="item" :index="index" @remove="remove"></promise-child>  </div> </div></template><script>import uuid from 'uuid'import PromiseChild from '@/components/promiseChild'export default { name: `PromiseFather`, components: {  PromiseChild }, data () {  return {   title: 'WHY! mtw',   promiseChild: '',   validateSet: []  } }, methods: {  validate (callback) {   if (this.validateSet && this.validateSet.length > 0) {    const promiseList = []    this.$refs.promiseChild.forEach((item, index) => {     promiseList.push(item.validate())    })    Promise.all(promiseList).then(() => {     callback(true)    }).catch(() => {     callback(false)    })   } else {    callback(true)   }  },  add () {   this.validateSet.push({    name: '',    phone: '',    id: uuid.v4()   })  },  remove (num) {   this.validateSet.splice(num, 1)  } }}</script><style scoped> .index {  margin-left: -546px; } .button {  margin-left: 60px; }</style>

*子組件(promiseChild.vue):

<template> <div class="promise-child">  <el-form :model="form" ref="form" :rules="formRules" :inline="true" label-position="right">   <el-form-item :label="`${index + 1}`+'、'">   </el-form-item>   <el-form-item label="姓名" prop="name">    <el-input v-model="form.name" size="small"></el-input>   </el-form-item>   <el-form-item label="手機" prop="phone">    <el-input v-model="form.phone" size="small"></el-input>   </el-form-item>   <el-form-item>    <el-button @click="remove" size="small">刪除</el-button>   </el-form-item>  </el-form> </div></template><script>import uuid from 'uuid'export default { name: `PromiseChild`, props: {  formData: Object,  index: Number }, data () {  return {   form: {    name: '',    phone: '',    id: uuid.v4()   },   formRules: {    name: [     { required: true, message: '請輸入姓名!', trigger: 'blur' }    ],    phone: [     { required: true, message: '請輸入手機號碼', trigger: 'blur' },     { max: 11, message: '長度不能超過11', trigger: 'blur' },     {      validator: (rules, value, callback) => {       if (value) {        let regPhone = /^(13[0-9]|15[012356789]|18[0123456789]|147|145|17[0-9])/d{8}$/        if (regPhone.test(value)) {         callback()        } else {         callback('請輸入正確的手機號碼!')        }       } else {        callback('請輸入手機號碼!')       }      }     }    ]   }  } }, methods: {  validate () {   return new Promise((resolve, reject) => {    this.$refs.form.validate(valid => {     if (valid) {      resolve()     } else {      reject()     }    })   })  },  remove () {   this.$emit('remove', this.index)  } }}</script>

以上這篇Vue循環(huán)組件加validate多表單驗證的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 卫辉市| 台州市| 桐城市| 江门市| 合水县| 礼泉县| 广元市| 荔波县| 如东县| 新化县| 兰溪市| 巴塘县| 福泉市| 马关县| 林芝县| 苗栗县| 临城县| 行唐县| 页游| 泸定县| 重庆市| 阿合奇县| 鄂温| 晴隆县| 望都县| 遵义县| 尚志市| 屏山县| 黄陵县| 丰原市| 班戈县| 云南省| 定结县| 高唐县| 防城港市| 呈贡县| 黄陵县| 云林县| 河曲县| 兴文县| 白河县|