Vue Element Plus 教师信息修改页面 - 优化后的代码
<p>{"title":"Vue Element Plus 教师信息修改页面 - 优化后的代码","description":"本页面使用 Vue Element Plus 框架实现教师信息修改功能。用户可以修改教师姓名、年龄、性别、电话、密码等信息。","keywords":"Vue, Element Plus, 教师信息修改, 前端开发, 代码优化","content":"<template>
<div style="padding: 0 250px 0 250px ;">
<el-form ref="ruleFormRef" :model="ruleForm" status-icon :rules="rules" label-width="120px" class="demo-ruleForm">
<el-form-item label="教师id" prop="tid">
<el-input style="width: 600px;margin: 5px 0;" v-model="ruleForm.tid" autocomplete="off" :disabled="true" />
</el-form-item>
<el-form-item label="教师名" prop="tname">
<el-input style="width: 600px;margin: 5px 0;" v-model="ruleForm.tname" autocomplete="off" :disabled="false" />
</el-form-item>
<el-form-item label="院名" prop="departmentName">
<el-input style="width: 600px;margin: 5px 0;" v-model="ruleForm.departmentName" autocomplete="off" :disabled="true" />
</el-form-item>
<el-form-item label="职位" prop="tsId">
<el-input style="width: 600px;margin: 5px 0;" v-model="ruleForm.tsId" autocomplete="off" :disabled="true" />
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input style="width: 600px;margin: 5px 0;" v-model.number="ruleForm.age" :disabled="false" />
</el-form-item>
<el-form-item label="性别" prop="sex">
<el-radio-group style="margin: 0 auto;" v-model="ruleForm.sex" :disabled="false">
<el-radio label="男" >男</el-radio>
<el-radio label="女" >女</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="电话" prop="phone">
<el-input style="width: 600px;margin: 5px 0;" v-model="ruleForm.phone" autocomplete="off" />
</el-form-item>
<el-form-item label="密码" prop="tpassword">
<el-input style="width: 600px;margin: 5px 0;" v-model="ruleForm.tpassword" autocomplete="off" />
</el-form-item>
<el-form-item>
<el-button style="margin: 0 auto;" type="primary" @click="submitForm(ruleFormRef)">修改</el-button>
<el-button style="margin: 0 auto;" type="primary" @click="resetForm(ruleFormRef)">Reset</el-button>
</el-form-item>
</el-form>
</div>
</template></p>
<script lang=\"ts\" setup>
import { reactive, ref } from \'vue\'
import axios from \'axios\';
import type { FormInstance, FormRules } from \'element-plus\'
const ruleFormRef = ref<FormInstance>()
const checkAge = (_rule: any, value: any, callback: any) => {
if (!value) {
return callback(new Error('Please input the age'))
}
setTimeout(() => {
if (!Number.isInteger(value)) {
callback(new Error('Please input digits'))
} else {
if (value < 18) {
callback(new Error('Age must be greater than 18'))
} else {
callback()
}
}
}, 1000)
}
const ruleForm = ref({
tid: '',
tname: '',
departmentName: '',
tsId: '',
phone: '',
age: '',
sex: '',
tpassword:''
})
axios({
method: 'Get',
url: '/api/myInformationServlet',
params: { tid: localStorage.getItem('tid') }
}).then(function (result) {
console.log(result);
ruleForm.value = result.data.data;
console.log(ruleForm.value);
})
const rules = reactive<FormRules<typeof ruleForm>>({
age: [{ validator: checkAge, trigger: 'blur' }],
})
const submitForm = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.validate((valid) => {
if (valid) {
axios({
method: 'POST',
url: '/api/myInformation',
data: ruleForm.value
}).then(function (result) {
if(result.data.flag){
alert(\"修改成功\")
}else{
alert(result.data.message)
}
})
} else {
console.log('error submit!')
return false
}
})
}
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.resetFields()
}
</script>
<p>点击修改传入的参数为空怎么解决</p>
<p>内容:根据代码,点击修改时传入的参数为空的原因可能是以下几点:</p>
<ol>
<li>
<p><code>submitForm</code>方法中的<code>ruleFormRef</code>参数未正确传入。确保在调用<code>submitForm</code>方法时,正确传入<code>ruleFormRef</code>参数。</p>
</li>
<li>
<p><code>ruleFormRef</code>的值未正确设置。确保在组件中正确设置<code>ruleFormRef</code>的值。</p>
</li>
<li>
<p><code>axios</code>请求返回的数据为空。可以在控制台输出<code>result.data</code>,查看返回的数据是否为空。</p>
</li>
<li>
<p>确保<code>ruleFormRef</code>和<code>ruleForm</code>都是响应式对象。可以将它们改为<code>reactive</code>对象,而不是<code>ref</code>对象。</p>
</li>
</ol>
<p>请按照以上步骤进行排查,如果问题仍然存在,请提供更多代码和错误信息以便进一步分析。</p>
原文地址: https://www.cveoy.top/t/topic/qxRb 著作权归作者所有。请勿转载和采集!