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

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

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

2024-05-06 15:29:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(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^)~ 驗(yàn)證成功!')    } else {     this.$message.error('-_- 驗(yàn)證失敗!')    }   })  } }}</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="手機(jī)" 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: '請(qǐng)輸入姓名!', trigger: 'blur' }    ],    phone: [     { required: true, message: '請(qǐng)輸入手機(jī)號(hào)碼', trigger: 'blur' },     { max: 11, message: '長(zhǎng)度不能超過(guò)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('請(qǐng)輸入正確的手機(jī)號(hào)碼!')        }       } else {        callback('請(qǐng)輸入手機(jī)號(hào)碼!')       }      }     }    ]   }  } }, methods: {  validate () {   return new Promise((resolve, reject) => {    this.$refs.form.validate(valid => {     if (valid) {      resolve()     } else {      reject()     }    })   })  },  remove () {   this.$emit('remove', this.index)  } }}</script>            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 湘潭县| 民勤县| 荔浦县| 芜湖县| 宜都市| 呈贡县| 武邑县| 深州市| 桑植县| 类乌齐县| 新建县| 毕节市| 胶州市| 鸡东县| 宁远县| 绥德县| 濉溪县| 丽江市| 福建省| 喀喇| 潼关县| 莲花县| 康定县| 琼中| 绥滨县| 蒲城县| 嘉义市| 通山县| 曲阜市| 高陵县| 新蔡县| 拉孜县| 木里| 大邑县| 阳山县| 新闻| 莲花县| 沈丘县| 莲花县| 赤城县| 霍州市|