好家伙,本篇用於測試"添加"介面,為後續"用戶註冊"功能做鋪墊 (完整代碼在最後) 我們要實現"添加"功能 老樣子我們先來理清一下思路, 現在,我是一個用戶,我來到了註冊頁面,我在一個①表單中要把我要添加的數據填好, 然後點擊添加按鈕,進行②數據校驗(看看用戶有沒有少填的數據), 隨後,③發送網路請 ...
好家伙,本篇用於測試"添加"介面,為後續"用戶註冊"功能做鋪墊
(完整代碼在最後)
我們要實現"添加"功能
老樣子我們先來理清一下思路,
現在,我是一個用戶,我來到了註冊頁面,我在一個①表單中要把我要添加的數據填好,
然後點擊添加按鈕,進行②數據校驗(看看用戶有沒有少填的數據),
隨後,③發送網路請求,把數據傳到後端,後端再把數據傳到資料庫中,
最後,④重置表單
大概是這麼回事
老樣子,我們先去餓了麽偷點東西
拿個表單,然後該刪的刪,最後留下序號,書名,作者三行以及兩個按鈕就好
1.前端基本視圖
代碼如下:
<template> <el-form style="width: 60%" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"><el-form-item label="圖書編號" prop="id"> <el-input v-model="ruleForm.id"></el-input> </el-form-item>
<el-form-item label="圖書名稱" prop="name"> <el-input v-model="ruleForm.name"></el-input> </el-form-item>
<el-form-item label="作者" prop="author"> <el-input v-model="ruleForm.author"></el-input> </el-form-item>
<el-form-item> <el-button type="primary" @click="submitForm('ruleForm')">修改</el-button> <el-button @click="resetForm('ruleForm')">重置</el-button> </el-form-item>
</el-form> </template>
2.數據校驗方法
驗證規則如下
rules: {
id:[
{ required: true, message: 'ID不能為空', trigger: 'blur' }
],
name: [
{ required: true, message: '圖書名稱不能為空', trigger: 'blur' }
],
author:[
{ required: true, message: '作者不能為空', trigger: 'blur' }
]
}
2.1.
required: true,
不可為空
2.2.
trigger: 'blur'
失去焦點時進行校驗
3.點擊"添加"",發起網路請求
submitForm(formName) {
const _this = this
this.$refs[formName].validate((valid) => {
if (valid) {
axios.put('XXX/XXX/XXX',this.ruleForm).then(function(resp){
if(resp.data == 'success'){
_this.$alert('《'+_this.ruleForm.name+'》修改成功!', '消息', {
confirmButtonText: '確定',
callback: action => {
_this.$router.push('/....')
}
})
}
})
} else {
return false;
}
});
},
3.1.validate()方法
說明:這是一個校驗方法,vue組件庫element-ui 的validate方法_moni110的博客-CSDN博客_elementui validate
validate()時elment-ui封裝好的用於對整個表單進行驗證
somethig.validate((valid) => {
if{valid}()
}
其中的valid是布爾值,為true時表示校驗通過。
調用validate()校驗時,需要prop屬性綁定校驗項的欄位名
如果prop屬性不綁定name這個欄位名,表單校驗時,不會校驗變數ruleForm.name 的值。
3.2.resp接受"網路請求"的返回值
成功了就談個窗,告訴你成功了
失敗了就,...就寄
4.重置表單方法:
resetForm(formName) {
this.$refs[formName].resetFields();
}
4.1.
resetFields();
這是組件裡面官方的表單重置方法,(以前用這個方法次次寄,這次居然能用了)
5.該部分完整代碼如下:
<template>
<el-form style="width: 60%" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="圖書編號" prop="id">
<el-input v-model="ruleForm.id"></el-input>
</el-form-item>
<el-form-item label="圖書名稱" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
<el-form-item label="作者" prop="author">
<el-input v-model="ruleForm.author"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">修改</el-button>
<el-button @click="resetForm('ruleForm')">重置</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
ruleForm: {
id: '',
name: '',
author: ''
},
rules: {
name: [
{ required: true, message: '圖書名稱不能為空', trigger: 'blur' }
],
author:[
{ required: true, message: '作者不能為空', trigger: 'blur' }
]
}
};
},
methods: {
submitForm(formName) {
const _this = this
this.$refs[formName].validate((valid) => {
if (valid) {
axios.put('http://localhost:8181/book/update',this.ruleForm).then(function(resp){
if(resp.data == 'success'){
_this.$alert('《'+_this.ruleForm.name+'》修改成功!', '消息', {
confirmButtonText: '確定',
callback: action => {
_this.$router.push('/BookManage')
}
})
}
})
} else {
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
}
},
}
</script>
後端介面還沒寫好,效果預覽圖暫無