zoukankan      html  css  js  c++  java
  • vue 封装登录组件

    简单封装登录组件,全局注册,利用element-ui库

    如图:

    定义Login.vue组件

    <template>
      <div>
        <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
          <el-form-item prop="username">
            <el-input v-model="ruleForm.username" placeholder="请输入用户名">
              <i slot="prefix" class="el-icon-user"></i>
            </el-input>
          </el-form-item>
          <el-form-item prop="password">
            <el-input
              v-model="ruleForm.password"
              placeholder="请输入密码"
              show-password
            >
              <i slot="prefix" class="el-icon-lock"></i>
            </el-input>
          </el-form-item>
          <el-form-item>
            <el-button @click="login" type="primary" style="100%"
              >登录</el-button
            >
          </el-form-item>
        </el-form>
      </div>
    </template>
    <script>
    export default {
      name: "Login",
      components: {},
      props: {
        ruleForm: {
          type: Object,
          required: true,
        },
        rules: {
          type: Object,
          required: true,
        },
      },
      methods: {
        login() {
          this.$refs.ruleForm.validate((valid) => {
            if (valid) {
              this.$emit('event', 'submit');
            }else{
              this.$emit('event', 'errHandle')
            }
          });
        },
      },
    };
    </script>
    

      注册公共组件

    在globalComponent中 index.js中
    
    // 注册全局组件
    import Vue from "vue"
    import Login from "../components/Login.vue"
    
    Vue.component('Login',Login)
    

      

    在main.js引入注册
    import Vue from 'vue'
    import App from './App.vue'
    import store from './store'
    import router from './router'
    import ElementUI from 'element-ui';
    import 'element-ui/lib/theme-chalk/index.css';
    import "./globalComponents";   //引入公共组件index
    Vue.config.productionTip = false
    Vue.use(ElementUI);
    new Vue({
      store,
      router,
      render: h => h(App)
    }).$mount('#app')
    

      在view文件中登录页面。

    <template>
      <div>
        <h1>登录组件</h1>
        <div>
          <Login
            :rule-form="ruleForm"
            :rules="rules"
            @submit="submit"
            @errHandle="errHandle"
          ></Login>
        </div>
      </div>
    </template>
    <script>
    export default {
      name: "LoginPage",
      components: {},
      props: {},
      data() {
        return {
          ruleForm: {
            username: "",
            password: "",
          },
          rules: {
            username: [
              {
                required: true,
                message: "用户名不能为空",
                trigger: "blur",
              },
              {
                min: 2,
                max: 6,
                message: "用户名在2-6之间",
                trigger: "blur",
              },
            ],
            password: [
              {
                required: true,
                message: "密码不能为空",
                trigger: "blur",
              },
              {
                min: 2,
                max: 6,
                message: "密码在2-6之间",
                trigger: "blur",
              },
            ],
          },
        };
      },
      methods: {
        submit() {
          this.$message.success("提交成功");
        },
        errHandle() {
          this.$message.error("表单错误");
        },
      },
    };
    </script>
    

      至此!  简单的封装就ok了!

    集思广益,仅供学习,侵权即删!!
  • 相关阅读:
    04-增删改查
    03-编写dao实现类方式
    02-基于注解的入门案例
    .net core api 图片上传与加载
    笔记一、数据库初始化 约定
    .net core MVC中级教程(四)
    .net core MVC中级教程(三)
    Windows 盘符映射
    c# 队列和堆栈
    isValidNode
  • 原文地址:https://www.cnblogs.com/hudunyu/p/13449791.html
Copyright © 2011-2022 走看看