最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue動(dòng)態(tài)綁定組件子父組件多表單驗(yàn)證功能的實(shí)現(xiàn)代碼

 更新時(shí)間:2018年05月14日 10:55:06   作者:會(huì)飛的閏土  
這篇文章主要介紹了vue動(dòng)態(tài)綁定組件子父組件多表單驗(yàn)證功能的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

前端項(xiàng)目中經(jīng)常會(huì)下拉或者選項(xiàng)卡,如果通過if,else或者switch去判斷加載的話會(huì)產(chǎn)生大量冗余代碼和變量定義,而且都寫在一起后人很難維護(hù)。

Vue核心在于組件,如果有內(nèi)容通過選項(xiàng)卡或者下拉框切換用動(dòng)態(tài)加載子組件最好不過。

如圖: selects文件夾中,index只負(fù)責(zé)公共數(shù)據(jù)(當(dāng)然公共數(shù)據(jù)也可以寫在其他文件,只留一個(gè)入口文件),而comp文件夾中的幾個(gè)組件則通過動(dòng)態(tài)加載。

動(dòng)態(tài)加載子組件:component

// 給下拉框綁定下拉列表的索引
<el-select v-model="value" placeholder="請(qǐng)選擇" style="float:left" @change="selectNum(value)">
     <el-option
         v-for="item in options"
         :key="item.value"
         :label="item.label"
         :value="item.value">
     </el-option>
</el-select>

引入組件后放到一個(gè)數(shù)組內(nèi),通過控制對(duì)應(yīng)的索引達(dá)到加載組件的目的


// 加載組件:每次下拉框監(jiān)聽則給changValue新賦值,如果下拉options的value從0開始則綁定組件時(shí)不用-1
<component :is="componentName[changValue - 1]" ref="subjectChild" @isSubmit="getSubmit"></component>

子父組件表單一起驗(yàn)證:

按鈕放在父組件內(nèi):

子組件:自定義驗(yàn)證規(guī)則

data(){
  const num = (rule, value, callback) => {
    let num = /^\d+$/
    if(!value){
      return callback(new Error('數(shù)量不能為空'))
    }else if(!num.test(value)){
      return callback(new Error('數(shù)量必須為數(shù)字'))
    }else{
      callback()
    }
  }
  const price = (rule, value, callback) => {
    let num2 = /^\d+$/
    if(!value){
      return callback(new Error('單價(jià)不能為空'))
    }else if(!num2.test(value)){
      return callback(new Error('單價(jià)必須為數(shù)字'))
    }else{
      callback()
    }
  }
  return{
    // 驗(yàn)證
    apple:{
      num: '',
      price: '',
    },
    reg:{
      num: [
        { validator: num, trigger: 'blur' }
      ],
      price: [
        { validator: price, trigger: 'blur' }
      ]
    }
  }
// 驗(yàn)證
  submitForm(){
    this.$refs.apple.validate((valid) => {
      if(valid){
        this.$emit('isSubmit',["subject",true])
      }else{
        this.$emit('isSubmit',["subject",false])
        return false
      }
    })
  }

父組件:

 // 獲取子組件狀態(tài)
  getSubmit(type){
    this.isRule = type[1]
  },
// 公共數(shù)據(jù)驗(yàn)證
  submitForm2(){
    // 如果選中了子組件
    if(this.changValue){
      this.$refs.subjectChild.submitForm()
    }
    let _this = this
    let p1 = new Promise((resolve, reject) => {
      _this.$refs.ruleForm.validate((valid) => {
        if(valid){
          resolve()
        }
      })
    })
    if(_this.isRule){
      Promise.all([p1]).then(() => {
        console.log('正確')
      })
      .catch(() => {
        console.log('錯(cuò)誤')
      })
    }else{
      console.log('錯(cuò)誤')
    }
  },

總結(jié)

以上所述是小編給大家介紹的vue動(dòng)態(tài)綁定組件子父組件多表單驗(yàn)證功能的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue中使用v-model雙向數(shù)據(jù)綁定select、checked等多種表單元素的方法

    Vue中使用v-model雙向數(shù)據(jù)綁定select、checked等多種表單元素的方法

    ?v-model?指令可以用在表單?input、textarea?及?select?元素上創(chuàng)建雙向數(shù)據(jù)綁定,它會(huì)根據(jù)控件類型自動(dòng)選取正確的方法來更新元素,本文給大家介紹Vue中如何使用v-model雙向數(shù)據(jù)綁定select、checked等多種表單元素,感興趣的朋友一起看看吧
    2023-10-10
  • vue項(xiàng)目打包并部署到Linux服務(wù)器的詳細(xì)過程

    vue項(xiàng)目打包并部署到Linux服務(wù)器的詳細(xì)過程

    我們?cè)跁?huì)開發(fā)項(xiàng)目的同時(shí),也應(yīng)該了解一下項(xiàng)目是如何部署到服務(wù)器的,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目打包并部署到Linux服務(wù)器的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 詳解vue-cli中使用rem,vue自適應(yīng)

    詳解vue-cli中使用rem,vue自適應(yīng)

    這篇文章主要介紹了vue-cli使用rem,vue自適應(yīng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 示例詳解Vue中控制組件的掛載位置

    示例詳解Vue中控制組件的掛載位置

    在 Vue 中,append-to-body=“true” 主要用于一些第三方組件(如 Element UI 或 Ant Design Vue 中的彈出框、下拉菜單等)來控制組件的掛載位置,本文介紹Vue中控制組件的掛載位置,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Vue實(shí)現(xiàn)左右菜單聯(lián)動(dòng)實(shí)現(xiàn)代碼

    Vue實(shí)現(xiàn)左右菜單聯(lián)動(dòng)實(shí)現(xiàn)代碼

    這篇文章主要介紹了Vue實(shí)現(xiàn)左右菜單聯(lián)動(dòng)實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • vue中如何使用echarts和echarts-gl實(shí)現(xiàn)3D餅圖環(huán)形餅圖

    vue中如何使用echarts和echarts-gl實(shí)現(xiàn)3D餅圖環(huán)形餅圖

    現(xiàn)在vue是很多公司前端的主流框架,我目前所在公司接觸的項(xiàng)目也都是使用vue來實(shí)現(xiàn)的,很少有完全使用原生的JavaScript來寫項(xiàng)目的了,下面這篇文章主要給大家介紹了關(guān)于vue中如何使用echarts和echarts-gl實(shí)現(xiàn)3D餅圖環(huán)形餅圖的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 在vue或H5中如何使用復(fù)制粘貼功能

    在vue或H5中如何使用復(fù)制粘貼功能

    這篇文章主要介紹了在vue或H5中如何使用復(fù)制粘貼功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染

    vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染

    這篇文章主要介紹了vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue項(xiàng)目支付功能代碼詳解

    vue項(xiàng)目支付功能代碼詳解

    這篇文章主要介紹了vue項(xiàng)目支付功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • vue.js實(shí)現(xiàn)的經(jīng)典計(jì)算器/科學(xué)計(jì)算器功能示例

    vue.js實(shí)現(xiàn)的經(jīng)典計(jì)算器/科學(xué)計(jì)算器功能示例

    這篇文章主要介紹了vue.js實(shí)現(xiàn)的經(jīng)典計(jì)算器/科學(xué)計(jì)算器功能,具有基本四則運(yùn)算計(jì)算器以及科學(xué)計(jì)算器的功能,可實(shí)現(xiàn)開方、乘方、三角函數(shù)以及公式運(yùn)算等功能,需要的朋友可以參考下
    2018-07-07

最新評(píng)論

本溪市| 临安市| 囊谦县| 香格里拉县| 六盘水市| 刚察县| 年辖:市辖区| 定边县| 卫辉市| 宜宾市| 忻城县| 怀安县| 镇沅| 内乡县| 萨嘎县| 阿拉尔市| 杭锦旗| 区。| 谢通门县| 德格县| 永新县| 嵊州市| 屯门区| 钟祥市| 即墨市| 太保市| 栖霞市| 甘德县| 防城港市| 清水河县| 万源市| 分宜县| 玉溪市| 永登县| 镇平县| 秀山| 齐齐哈尔市| 和政县| 连城县| 资中县| 新津县|