Vue+ElementUI實現簡單的用戶管理系統(三):使用ElementUI的表單組件實現添加用戶

(1)使用ElementUI的表單組件及表單驗證功能

<template>
  <div class="add">
    <h1>添加用戶</h1>
    <el-form
      :label-position="labelPosition"
      label-width="80px"
      :model="customer"
      :rules="rules"
      ref="ruleForm"
    >
      <el-form-item label="姓名" prop="name">
        <el-input v-model="customer.name"></el-input>
      </el-form-item>
      <el-form-item
        label="電話"
        prop="phone">
        <el-input v-model="customer.phone"></el-input>
      </el-form-item>
      <el-form-item label="郵箱" prop="email">
        <el-input v-model="customer.email"></el-input>
      </el-form-item>
      <el-form-item label="個人簡介" prop="desc">
        <el-input type="textarea" v-model="customer.desc"></el-input>
      </el-form-item>
      <el-form-item >
        <el-button type="primary" @click="submitForm('ruleForm')">立即創建</el-button>
      </el-form-item>
    </el-form>

  </div>
</template>
 data(){
      return {
        labelPosition: 'right',
        customer:{
          name:'',
          phone:'',
          email:'',
          desc:''
        },
        rules:{
          name:[
            { required: true, message: '請輸入姓名', trigger: 'blur' },
            { min: 2, max: 8, message: '長度在 2 到 8 個字符', trigger: 'blur' }
          ],
          phone:[
            { required: true, message: '請輸入電話', trigger: 'blur' }
          ],
          email:[
            { required: true, message: '請輸入郵箱', trigger: 'blur' }
          ],
          desc:[
            { required: true, message: '請輸入個人簡介', trigger: 'blur' }
          ],
        }
      }
    },

(2)使用axios發送post請求添加用戶

我遇到的bug也都寫在註釋的代碼裏了。。。。爲什麼用axios(config)無法把參數傳回給後臺?一定是我學的還太少。。。。。
在請求發送成功後還會調用ElementUI的Message組件,從頂部出現提醒添加成功。並跳轉到列表首頁。

this.$message({
                    message: '成功添加1位新用戶',
                    type: 'success'
                  });
                  this.$router.push({path:'/customers',query:{alert:'success'}})

全部代碼:

 submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
          //  alert('submit!');
            let newCustomer = {
              name: this.customer.name,
              phone: this.customer.phone,
              email: this.customer.email,
              desc: this.customer.desc,
            }
            console.log(newCustomer)

            // let config = {
            //   url:'http://localhost:3000/users',
            //   methods:'post',
            //   data: newCustomer
            // }

            axios.post('http://localhost:3000/users',newCustomer)
                .then((response) => {
                  console.log(response)
                  this.$message({
                    message: '成功添加1位新用戶',
                    type: 'success'
                  });
                  this.$router.push({path:'/customers',query:{alert:'success'}})
                })

            //爲什麼用axios(config)無法把參數傳回給後臺?
            // axios(config)
            //     .then((response) => {
            //       console.log(response)
            //     })

          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },

對於一個寫後端的人來說,在回到首頁發現真的有新數據時,對於居然不需要使用數據庫也可以添加數據感覺真是太神奇了。。。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章