• 【小慕读书】—— 后台管理系统学习:Element-UI使用


    前言:最近在学习Vue+Element UI+Node.js小慕读书中后台管理系统开发课程,这里对学习过程作个笔记,方便自己和大家翻阅。Element-UI官网地址:https://element.eleme.cn/#/zh-CN/component/layout


    一、vue-cli 3.0 安装和创建项目

    • 3.0 新加入了 TypeScript 以及 PWA 的支持
    • 部分命令发生了变化:
      • 下载安装  npm install -g vue@cli
      • 删除了vue list
      • 创建项目   vue create
      • 启动项目   npm run serve
    • 默认项目目录结构也发生了变化:
      • 移除了配置文件目录,config 和 build 文件夹
      • 移除了 static 文件夹,新增 public 文件夹,并且 index.html 移动到 public 中
      • 在 src 文件夹中新增了 views 文件夹,用于分类 视图组件 和 公共组件
    • 参考文档:https://cli.vuejs.org/   

    二、Element-UI 基本用法

    1.初始化项目

    vue create element-test

    2.安装

    npm i element-ui -S
    

    3.Vue 插件 + 引用样式

    //main.js
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    
    Vue.use(ElementUI)
    

    4.element-ui 案例App.vue  

    <template>
      <div id="app">
        <el-button @click="show">点我</el-button>
      </div>
    </template>
    
    <script>
    export default {
      name: 'app',
      methods: {
        show() {
          this.$message.success('Toast from element-ui')
        }
      }
    }
    </script>

    三、按需加载

    1. 安装 babel-plugin-component

    npm install babel-plugin-component -D
    

    2.修改 babel.config.js:  

    module.exports = {
      "presets": [["es2015", { "modules": false }]],
      "plugins": [
        [
          "component",
          {
            "libraryName": "element-ui",
            "styleLibraryName": "theme-chalk"
          }
        ]
      ]
    }
    

    3.按需引入 Button 和 Message --- App.vue去掉整体包和样式引用  

    import { Button, Message } from 'element-ui'
    
    Vue.component(Button.name, Button)
    Vue.prototype.$message = Message        //$messages是当做方法放在Vue的原型上
    

    四、插件引用

    可以通过 element 插件快速集成 element-ui ,不用再手动添加 

    vue add element

    五、表单基本用法

    1.el-form 容器,通过 model 绑定数据

    2.el-form-item 容器,通过 label 绑定标签

    3.表单组件通过 v-model 绑定 model 中的数据

    <template>
      <div id="app">
        <el-form inline :model="data">
          <el-form-item label="审批人">
            <el-input v-model="data.user" placeholder="审批人"></el-input>
          </el-form-item>
          <el-form-item label="活动区域">
            <el-select v-model="data.region" placeholder="活动区域">
              <el-option label="区域一" value="shanghai"></el-option>
              <el-option label="区域二" value="beijing"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="onSubmit">查询</el-button>
          </el-form-item>
        </el-form>
      </div>
    </template>
    
    <script>
    export default {
      name: 'app',
      data() {
        return {
          data: {
            user: 'sam',
            region: '区域二'
          }
        }
      },
      methods: {
        onSubmit() {
          console.log(this.data)
        }
      }
    }
    </script>
    

      

    六、表单校验基本用法

    1.定义校验规则,可以绑定到 el-form 或 el-form-item

    2.指定 el-form-item 的 prop 属性

       异常处理方式一通过绑定rules对change或blur事件监听 

       异常处理方式二: 指定el-form-item的ref="form", this.$refs.form.validate((isValid, errors) => { …… })

     

        

    <el-form inline :model="data" :rules="rules" ref="form">
          <el-form-item label="审批人" prop="user">
            <el-input v-model="data.user" placeholder="审批人" clearable></el-input>
          </el-form-item>
     data() {
            const userValidator = (rule, value, callback) => {
              if (value.length > 3) {
                callback()
              } else {
                callback(new Error('用户名长度必须大于3'))
              }
            }
            return {
              data: {
                user: 'sam',
                region: '区域二'
              },
              rules: {
                user: [
                  { required: true, trigger: 'change', message: '用户名必须录入' },
                  { validator: userValidator, trigger: 'change' }
                ]
              }
            }
      },
      methods: {
        onSubmit() {
          console.log(this.data)
          //异常处理方式二   ref="form"
          this.$refs.form.validate((isValid, errors) => {
            console.log(isValid, errors)
          })
        }
      }
    

     

    七、表单校验高级用法

    用法一:动态改变校验规则

    1.rules 只包含一个校验规则

    {
      rules: {
          user: [
            { required: true, trigger: 'change', message: '用户名必须录入' },
          ]
      }
    }
    

    2.动态添加 rules

       注意:只能使用this.rules = Object.assign……而不能用this.rules.user.push(newRule)

                    因为watch监听不到rules.user的变化,只能监听到rules的变化

    <el-button type="primary" @click="addRule">添加校验规则</el-button>
    
    addRule() {
        const userValidator = (rule, value, callback) => {
          if (value.length > 3) {
            this.inputError = ''
            this.inputValidateStatus = ''
            callback()
          } else {
            callback(new Error('用户名长度必须大于3'))
          }
        }
        const newRule = [
          ...this.rules.user,
          { validator: userValidator, trigger: 'change' }
        ]
        this.rules = Object.assign({}, this.rules, { user: newRule })
    }

    3.validate-on-rule-change属性: 立即做校验

     <el-form
            inline
            :model="data"
            :rules="rules"
            ref="form"
            validate-on-rule.change
        >
    

    用法二:手动控制校验状态

    TIP

    • validate-status:验证状态,枚举值,共四种:
      • success:验证成功
      • error:验证失败
      • validating:验证中
      • (空):未验证
    • error:自定义错误提示

    注意:除非需求需要,否则不推荐使用

    1.设置 el-form-item 属性

    <el-form-item
      label="审批人"
      prop="user"
      :error="error"
      :validate-status="status"
    status-icon > <!-- ... --> </el-form-item>

    2.自定义 status 和 error

    data() {
       return {
    //error和status要和data与rules在同一级 error: '这是一个自定义的错误', status: 'error', data: { user: 'sam', region: '区域二', }, rules: { user: [ { required: true, trigger: 'change', message: '用户名必须录入' }, ] } } }, 
    showError() {
      this.status = 'error'
      this.error = '用户名输入有误'
    },
    showSuccess() {
      this.status = 'success'
      this.error = ''
    },
    showValidating() {
      this.status = 'validating'
      this.error = ''
    }
    

    八、表单属性解析

    • label-position:标签位置,枚举值,left 和 top
    • label-width:标签宽度
    • label-suffix:标签后缀
    • inline:行内表单
    • disabled: 设置整个 form 中的表单组件全部 disabled,优先级低于表单组件自身的 disabled
    • size:设置表单组件尺寸
     <el-form
                :model="data"
                style=" 500px"
                label-position="left"
                label-width="100px"
                label-suffix=":"
                :inline="false"
                :rules="rules"
                :disabled="false"
                status-icon
                validate-on-rule-change
                hide-required-asterisk
                :inline-message="false"
                >
          <el-form-item
                  label="用户名"
                  prop="user"
                  :error="error"
                  :validate-status="status"
                  >
            <el-input v-model="data.user" placeholder="用户名" clearable></el-input>
          </el-form-item>
          <el-form-item label="活动区域" prop="region">
            <el-select v-model="data.region" placeholder="活动区域" style="100%">
              <el-option label="区域一" value="shanghai"></el-option>
              <el-option label="区域二" value="beijing"></el-option>
            </el-select>
          </el-form-item>
    


    注:项目来自慕课网

    人与人的差距是:每天24小时除了工作和睡觉的8小时,剩下的8小时,你以为别人都和你一样发呆或者刷视频
  • 相关阅读:
    2019.4.26 周五 阴转小雨
    2019.4.25 周四 阴有小雨
    2019.4.24 周三 阴
    2019.4.23 周二 阴
    2019.4.22 周一 阴转小雨
    oracle优化(一)
    Opencv-Python学习笔记(二)
    Opencv-Python学习笔记(一)
    XtraGrid实现checkbox全选功能
    XtraGrid中checkbox状态设置
  • 原文地址:https://www.cnblogs.com/ljq66/p/14346613.html
Copyright © 2020-2023  润新知