uview 动态表单校验

<template>
  <view class="">
    <u-form :model="dongModel" ref="dongForm">
      <u-form-item v-for="(item,index) in dongData.dongList" :label="item.label" :prop="`dongList_${index}_value`">
        <u-input v-model="dongModel[`dongList_`+index+`_value`]" />
      </u-form-item>
    </u-form>
    <u-button @click="dongSubmit">提交</u-button>
  </view>
</template>

<script>
  export default {
    data() {
      return {
        dongModel: {

        },
        dongRules: {

        },
        dongData: {
          dongList: [],
        }
      };
    },
    onLoad() {
      this.getDongData();
    },
    methods: {
      getDongData() {
        let dongList = [];
        for (var i = 0; i < 5; i++) {
          dongList.push({
            label: "label" + i,
            value: undefined,
            nessary: i % 2 == 1
          })
        }
        this.dongData.dongList = dongList;
        this.disposalData();
      },
      disposalData() {
        let that = this;
        that.dongData.dongList.forEach((dong, index) => {
          that.$set(that.dongModel, `dongList_${index}_value`, null);
          if (dong.nessary) {
            that.$set(that.dongRules, `dongList_${index}_value`, [{
              required: true,
              message: '请输入姓名',
              trigger: ['blur', 'change']
            }])
          }
        })
        that.$nextTick(() => {
          that.$refs.dongForm.setRules(that.dongRules);
        })
      },
      dongSubmit() {
        let that = this;
        if (Object.keys(that.dongRules).length > 0) {
          that.$refs.dongForm.validate().then(res => {
            that.returnData();
          }).catch(errors => {
            console.log(errors)
            uni.$u.toast('校验失败')
          })
        } else {
          that.returnData();
        }
      },
      returnData() {
        let that = this;
        let dongModelData = Object.keys(that.dongModel);
        dongModelData.forEach(key => {
          let keys = key.split("_");
          let dataIndex = parseInt(keys[1]);
          that.dongData.dongList[dataIndex].value = that.dongModel[key];

        })
        console.log(that.dongData);
      }
    },
  };
</script>

<style>
</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值