代码中,ref="loginRef" 创建了一个名为 loginRef 的引用,它指向当前的 <el-form> 元素。之后,你可以通过 this.$refs.loginRef 来访问这个 <el-form> 元素或其相关的数据和方法。
const loginRef = ref(null)
<el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">java456(陈豪) Vue3 后台管理系统</h3>
<!-- prop="username" 是验证规则 const loginRules 进行验证的。 -->
<el-form-item prop="username">
<el-input
v-model="loginForm.username"
type="text"
size="large"
auto-complete="off"
placeholder="账号"
>
<template #prefix><svg-icon icon="user" /></template>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
type="password"
size="large"
auto-complete="off"
placeholder="密码"
@keyup.enter="handleLogin"
>
<template #prefix><svg-icon icon="password" /></template>
</el-input>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
<el-form-item style="width:100%;">
<el-button
size="large"
type="primary"
style="width:100%;"
@click.prevent="handleLogin"
>
<span>登 录</span>
</el-button>
</el-form-item>
</el-form>
表单验证
this.$refs.loginRef.validate((valid) => {
if (valid) {
// 表单验证通过,执行登录逻辑
this.handleLogin();
} else {
// 表单验证失败,显示错误信息或进行其他处理
}
});
访问属性值。
const username = this.$refs.loginRef.loginForm.username;
console.log(username); // 输出用户名const rules=ref({
username:[
{ required: true, message: '请输入用户名'},
{ required: true, validator: checkUsername, trigger: "blur" }
],
email: [{ required: true, message: "邮箱地址不能为空", trigger: "blur" },
{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" },
{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
})
const checkUsername = async (rule, value, callback) => {
if(form.value.id==-1){
const res=await requestUtil.post("sys/user/checkUserName",{username:form.value.username});
if (res.data.code==500) {
callback(new Error("用户名已存在!"));
} else {
callback();//不做任何处理。
}
}else{
callback();
}
}<template>
<div>
<!-- 组件的模板部分 -->
</div>
</template>
<script setup>
import { onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted } from 'vue';
// 在组件挂载之前调用
onBeforeMount(() => {
console.log('beforeMount');
});
// 在组件挂载完成后调用
onMounted(() => {
console.log('mounted');
});
// 在数据更新之前调用
onBeforeUpdate(() => {
console.log('beforeUpdate');
});
// 在数据更新之后调用
onUpdated(() => {
console.log('updated');
});
// 在组件卸载之前调用
onBeforeUnmount(() => {
console.log('beforeUnmount');
});
// 在组件卸载之后调用
onUnmounted(() => {
console.log('unmounted');
});
</script>目录含义 路径含义 ./相当于 同一级 ../表示 上一级 @/表示 根目录
站长微信:xiaomao0055
站长QQ:14496453