vue + element、フォームに入力された最後の値を保持し、それを変更します(shj

 実装機能:

新しいボタンと変更されたボタンを指定し、新しいボタンの[OK]ボタンをクリックして、フォームの値をデータに保存します 

新しいボタンを追加した後に「vue」と入力すると、変更ボタンをクリックした後に変更フォームに保存された「vue」を変更できます。

注:新しいform.xzと変更されたform.xzは同じxzを使用できるため、データの値を過去のformxgに割り当てることができます。 

formxg.xzdate=form.zxdateの簡単な理解

注:フォームの値を新しいボタンのフォームに保存する場合は、オブジェクトをコピーするためのコードを、[OK]をクリックするたびに処理される関数に追加する必要があります。

 新しいボタンフォームの値を変更する場合は、コピーしたオブジェクトのコードを「変更」をクリックする機能に追加する必要があります。クリックして変更すると、新しいフォームの値がの値に割り当てられます。変更されたフォーム。

上記のように、値が取得されているかどうかを印刷する場合。this.formxgまたはthis.dataをこのポインティングなしでログに記録して印刷できます。定義されていないというエラーが報告されます。

<template>
  <div>
    <br />
    <el-button type="warning" plain @click="addClick">新增2</el-button>
    <el-button type="warning" plain @click="changeClick">修改</el-button>
    <!-- 弹出新增 -->
    <el-dialog
      title="新增设备信息"
      :visible.sync="dialogFormVisible"
      width="30%"
      @close="closexz"
    >
      <el-form ref="form" :model="form" :rules="rules">
        <el-form-item label="设备编号" prop="xzdate">
          <el-input v-model.trim="form.xzdate" placeholder="请输入设备编号">
          </el-input>
        </el-form-item>

        <el-form-item label="设备描述" prop="xzsec">
          <el-input
            v-model.trim="form.xzsec"
            type="textarea"
            :rows="3"
            placeholder="请输入设备描述"
          ></el-input>
        </el-form-item>
      </el-form>
      <el-button type="primary" @click="submitForm('form')"> 确定</el-button>
      <el-button @click="cancelxz">取 消</el-button>
    </el-dialog>

    <!-- 弹出修改 -->
    <el-dialog
      title="修改设备信息"
      :visible.sync="dialogFormChange"
      width="30%"
      @close="closexz"
    >
      <el-form ref="formxg" :model="formxg" :rules="rules">
        <el-form-item label="设备编号" prop="xzdate">
          <el-input v-model.trim="formxg.xzdate" placeholder="请输入设备编号">
          </el-input>
        </el-form-item>

        <el-form-item label="设备描述" prop="xzsec">
          <el-input
            v-model.trim="formxg.xzsec"
            type="textarea"
            :rows="3"
            placeholder="请输入设备描述"
          ></el-input>
        </el-form-item>
      </el-form>

      <el-button type="primary" @click="changeForm('formxg')"> 确定</el-button>
      <el-button @click="cancelxz">取 消</el-button>
    </el-dialog>
  </div>
</template>
<script>
export default {
  data() {
    return {
      //弹出新增表单
      form: {
        xzdate: "1",
        xzsec: "2",
      },
      //修改 表单
      formxg: {
        xgdate: "",
        xgsec: "",
      },
      data: {},
      rules: {
        xzdate: [
          {
            required: true, //是否必填
            message: "不能为空", //规则
            trigger: "blur", //何事件触发
          },
          {
            min: 1,
            max: 10,
            message: "长度在1到10个字符",
          },
        ],
        xzsec: [
          {
            required: true, //是否必填
            message: "不能为空", //规则
            trigger: "blur", //何事件触发
          },
        ],
      },
      //设置的弹出新增窗口
      dialogFormVisible: false,
      dialogFormChange: false,
    };
  },
  methods: {
    //1.新增一个 修改按钮
    //2.点击新增弹出框 的确定按钮 把 新增表单里 的值 保存 到 data中

    //3.关闭新增 清空数据
    // 点击修改按钮
    // 1. 取值
    // 2. 赋值
    // 3. 显示
    //4.把数据 赋值到 修改的表单里
    //5. 修改数据的值 并确定
    // 新增
    addClick() {
      //复制两份form
      // this.formxg = this.form; 如果关闭表单则保留上次输入的数据
      this.form = {};
      this.dialogFormVisible = true;
    },
    //修改
    changeClick() {
      // 在点修改按钮的时候 把data里的值赋值到修改的表单里
       this.formxg = Object.assign({}, this.data); 
      console.log(this.formxg, "this.formxg");
      this.dialogFormChange = true;
    },
    //新增  确定按钮
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.data = Object.assign({}, this.form);
          alert("新增成功!");
          this.dialogFormVisible = false;
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
    //修改  确定按钮
    changeForm() {
      this.$refs[formxg].validate((valid) => {
        if (valid) {
          console.log(this.form, "this.form");  //是否拿到新增表单输入的值
          this.dialogFormChange = false;
          alert("修改成功!");
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
    //取消
    cancelxz() {
      this.dialogFormVisible = false;
      this.$refs.form.resetFields(); //移除校验结果并重置字段值
      this.form = {};
    },
    //Dialog 弹窗关闭的回调
    closexz() {
      this.$refs.form.resetFields(); //移除校验结果并重置字段值
      console.log(this.form, "this.form");
      console.log(this.data, "this.data");
    },
  },
};
</script>
<style>
</style>

おすすめ

転載: blog.csdn.net/weixin_57607714/article/details/122997614