【问题标题】:Vue js Form Field should be emptyVue js表单字段应该为空
【发布时间】:2018-11-24 08:13:20
【问题描述】:

我有一个父组件,我正在以子组件形式分配值。但是在提交表单后,我希望表单字段应该为空。

我正在使用 resetFields 函数来重置值,但是当我使用这些函数时,它正在设置最后一个值,我从父组件发送它而不是重置值我希望表单字段应该是空的。

<script>
    export default {
        props: ["empData"],
        data {
            return() {
                empInfo: {
                    name: "",
                    id: null,
                    age: null
                }
            }
        },
        methods: {
            getUserData() {
                if (response.status == "SUCCESS") {
                    this.$refs['empInfo'].resetFields();
                }
            }
        }
        watch: {
            empData: immediate: true,
            handler() {
                this.empInfo = this.empData;
            }
        }
    }
</script>
<template>
  <div>
    <el-form :label-position="labelPosition" :model="empInfo" status-icon :rules="rules" ref="empInfo">
      <el-form-item label="Employee Name" prop="name">
        <el-input v-model="empInfo.markupName"></el-input>
      </el-form-item>
      <el-form-item label="EMployee Id" prop="id">
        <el-input v-model="empInfo.id"></el-input>
      </el-form-item>
      <el-form-item label="Employee Age" prop="age">
        <el-input v-model="empInfo.age"></el-input>
      </el-form-item>
      <el-button @click="getUserData">Submit</el-button>
  </div>
</template>

【问题讨论】:

  • 您可以在组件中编写一个重置方法并初始化值(使用 empData 或空值)并在 created() 上调用此方法,然后在重置或数据更改后调用此方法.

标签: vue.js vuejs2 element-ui


【解决方案1】:

Element UI 表单似乎锁定了它初始化时使用的数据,resetFields() 使用该数据重新初始化表单。您可以将观察者推迟到next tick,以便组件最初为空的empInfo 可以作为初始数据传播到Element UI 表单,然后在resetFields() 中使用。

watch: {
  empData: {
    immediate: true,
    handler(value) {
      this.$nextTick(() => {
        if (value) {
          this.empInfo = value;
        }
      });
    }
  }
}

demo

【讨论】:

  • @user3739946 没问题 :)
【解决方案2】:

如果您使用父子组件,最好将数据作为输出发送到父组件,然后处理数据。这种父子模式有利于制作动态表格。重置方法会清除您的表单。

getUserData() {
        if (this.$refs.empInfo.validate()) {
            this.$emit('get-user-data', this.empInfo);
            this.$refs.empInfo.reset();
        }
}

【讨论】:

  • 虽然这段代码可能会解决问题,但一个好的答案应该始终解释问题是什么以及这段代码如何提供帮助。
猜你喜欢
  • 2020-02-12
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 2019-09-03
  • 2016-03-24
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多