banner
leoking

leoking

前端开发者
tg_channel

在vue2中,element 2.x版本中,el-form-item嵌套的el-form-item是通过for循环渲染的。您应该如何自定义校验?

如果在 Vue 2 中使用 Element UI 2.x 版本,你通過 v-for 循環渲染了多個嵌套的 el-form-item,並且想要自定義校驗功能,你可以使用動態校驗規則的方式來實現。下面是一個示例代碼,展示了如何自定義校驗動態渲染的嵌套 el-form-item:

代碼#

<template>
<el-form :model="form" :rules="rules" ref="myForm">
  <el-form-item v-for="(item, index) in formItems" :label="item.label" :key="index">
    <el-input v-model="item.value" @blur="validateItem(index)"></el-input>
  </el-form-item>
  <el-button type="primary" @click="submitForm">提交</el-button>
</el-form>
</template>

<script>
export default {
data() {
  return {
    formItems: [
      { label: '項目 1', value: '' },
      { label: '項目 2', value: '' },
      // ...
    ],
    form: {},
    rules: {}
  };
},
methods: {
  validateItem(index) {
    this.$refs.myForm.validateField(`formItems.${index}.value`, error => {
      // 校驗結果處理
    });
  },
  submitForm() {
    this.$refs.myForm.validate(valid => {
      if (valid) {
        // 表單校驗通過,執行提交操作
        // ...
      } else {
        // 表單校驗失敗,給出錯誤提示
        // ...
      }
    });
  }
},
mounted() {
  this.rules = this.formItems.reduce((rules, item, index) => {
    rules[`formItems.${index}.value`] = [
      { required: true, message: `請填寫${item.label}`, trigger: 'blur' },
      // 自定義校驗規則...
    ];
    return rules;
  }, {});
}
};
</script>

在這個示例中,我們使用 v-for 循環渲染了多個嵌套的 el-form-item,並且為每個 el-form-item 綁定了一個動態的 v-model。我們通過 validateItem 方法來觸發對特定 el-form-item 的校驗,該方法接收 index 作為參數。

在 mounted 生命周期鉤子中,我們使用 reduce 方法根據 formItems 數組動態生成了校驗規則對象 rules。在這個示例中,我們只演示了使用 required 校驗規則來檢查每個項是否為空,你可以根據自己的需求添加其他自定義校驗規則。

在 validateItem 方法中,我們使用 this.$refs.myForm.validateField 方法來對特定的 el-form-item 進行校驗。我們通過動態的字段路徑 formItems.${index}.value 來指定要校驗的字段,同時傳遞了一個回調函數來處理校驗結果。

最後,我們使用 this.$refs.myForm.validate 方法來觸發整個表單的校驗,並在回調函數中處理校驗結果,執行相應的操作。

請注意,這個示例假設 formItems 數組中的每個對象都有 label 和 value 屬性,你可以根據實際情況進行調整。

在校驗規則生成時,我們使用了動態的字段路徑 formItems.${index}.value 來匹配每個項的值,並將其綁定到相應的校驗規則上。

在 validateItem 方法中,我們使用 this.$refs.myForm.validateField 來針對特定的字段進行校驗。通過傳遞動態的字段路徑和回調函數,我們可以對特定的 el-form-item 進行校驗,並在校驗結果回調函數中進行相應的處理。

最後,在提交表單時,我們使用 this.$refs.myForm.validate 來觸發整個表單的校驗,並在回調函數中處理校驗結果。

動態渲染的嵌套 el-form-item 中實現自定義校驗功能!#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。