el-form嵌套el-tab再嵌套el-form

为啥加了这个div就ok了

<template>
  <el-container>
    <el-form ref="form" :model="form" label-width="80px" :rules="rules">
      <el-form-item label="活动名称" prop="name">
        <el-input v-model="form.name"></el-input>
      </el-form-item>
      <el-tabs v-model="editableTabsValue" type="card" editable @edit="handleTabsEdit">
        <el-tab-pane :key="item.name" v-for="item in form.tableForms" :label="item.title" :name="item.name">
          <!--     amazing div     -->
          <div>
            <el-form :model="item" ref="tableForm" :rules="tableFormRule">
              <el-form-item label="tableName" prop="tableName">
                <el-input v-model="item.tableName"></el-input>
              </el-form-item>
            </el-form>
          </div>
        </el-tab-pane>
      </el-tabs>
      <el-form-item>
        <el-button type="primary" @click="submitForm('form')">立即创建</el-button>
        <el-button>取消</el-button>
      </el-form-item>
    </el-form>
  </el-container>
</template>

<script>
export default {
  name: 'HelloWorld',
  data() {
    return {
      id: 1,
      tableFormRule: {
        tableName: [
          {required: true, message: '请输入活动名称', trigger: 'blur'},
          {min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur'}
        ],
      },
      rules: {
        name: [
          {required: true, message: '请输入活动名称', trigger: 'blur'},
          {min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur'}
        ]
      },
      form: {
        name: '',
        region: '',
        date1: '',
        date2: '',
        delivery: false,
        type: [],
        resource: '',
        desc: '',
        tableForms: [{
          id: 1,
          title: '11',
          name: '1',
          tableName: ''
        }]
      },
      editableTabsValue: '1',
      tabIndex: 2
    }
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          for (let i = 0; i < this.$refs["tableForm"].length; i++) {
            this.$refs["tableForm"][i].validate(isVaild => {
              if (isVaild) {
                console.log("ffff");
              } else {
                console.log("1111");
              }
            });
          }
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    handleTabsEdit(targetName, action) {
      if (action === 'add') {
        let newTabName = ++this.tabIndex + '';
        this.id++;
        this.form.tableForms.push({
          id: this.id,
          title: 'New Tab',
          name: newTabName,
          content: 'New Tab content'
        });

        this.editableTabsValue = newTabName;
      }
      if (action === 'remove') {
        let tabs = this.form.tableForms;
        let activeName = this.editableTabsValue;
        if (activeName === targetName) {
          tabs.forEach((tab, index) => {
            if (tab.name === targetName) {
              let nextTab = tabs[index + 1] || tabs[index - 1];
              if (nextTab) {
                activeName = nextTab.name;
              }
            }
          });
        }

        this.editableTabsValue = activeName;
        this.form.tableForms = tabs.filter(tab => tab.name !== targetName);
      }
    }
  }
}
</script>
阅读 2.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题