五分钟教你熟练掌握element组件常用组件

239 阅读3分钟

1.el-tree,常用属性以及方法介绍

data	数据来源

props	定义数据的键	例如: :props="defaultProps"  
			
default-expand-all	默认展开全部节点

highlight-current	选择当前节点默认高亮

expand-on-click-node	是否在点击节点的时候展开或者收缩节点

node-key	        每个树节点用来作为唯一标识的属性,

show-checkbox	        开启勾选框,选择节点

check-strictly	        显示复选框的情况下,是否严格的遵循父子不互相关联的做法

getCheckedKeys	        节点被选择时,返回被选中的key组成的数组

setCheckedKeys	        通过 keys 设置目前勾选的节点,使用此方法必须设置 node-key 属性
	                一般用于数据回显  需要用到ref方法,获取tree,
                        然后绑定setCheckedKeys(传入数组)

代码示例

<el-tree 
:data="data"   // 显示数据 
:props="defaultProps"  // 数据显示规则 例如: { children: 'children',  label: 'name'}:expand-on-click-node="false" default-expand-all @node-click="handleNodeClick"/>
// 里面可以使用插槽来自定义内容

data中的数据如果有多层联级嵌套,需要显示,而且,服务器返回的数据不是嵌套关系,则需要用到数组转树的技术;

export const arr2tree = (arr, rootId = null) => {  return arr.filter(item => item.pid === rootId).map(item => ({ ...item, children: arr2tree(arr, item.id).length ? arr2tree(arr, item.id) : null }))}

解析: 在utlis/index.js里面定义方法并导出,在使用组件中导入,传入有关联的id将原数组筛选,筛选出符合条件的数据,然后将数组再次map,给数组元素都添加一个子数组,并再次调用转换函数,再次筛选;   此处rootId,是要求从第几层开始筛选,比如传入一级数据id,就是以一级数据开始

2. el-table

data	对象数组---数据
el-table-column	 在上面写prop来对应对象中的键名即可填入数据
lable	定义表格的列名
fixed	列是否固定在左侧或者右侧,true 表示固定在左侧
插槽	用template包裹		v-slot="{row}"			row就是该行的数据

// 基本使用
<template>
    <el-table
      :data="tableData"
      style="width: 100%">
      <el-table-column
        prop="date"
        label="日期"
        width="180">
      </el-table-column>
      <el-table-column
        prop="name"
        label="姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="address"
        label="地址">
       <template v-slot="{row}">//row就是该行的数据</template>
      </el-table-column>
    </el-table>
  </template>

  <script>
    export default {
      data() {
        return {
          tableData: [{
            date: '2016-05-02',
            name: 'laiking',
            address: '武汉市洪山区'
          }, {
            date: '2016-05-04',
            name: 'laiking',            address: '武汉市洪山区'          }, {
            date: '2016-05-01',
            name: 'laiking',            address: '武汉市洪山区'          }, {
            date: '2016-05-03',
            name: 'laiking',            address: '武汉市洪山区'          }]
        }
      }
    }
  </script>

3.el-pagination 分页器

page-size       每页显示条目个数,支持 .sync 修饰符
total	        总条数
page-count	总页数
current-page	当前页数,支持 .sync 修饰符
disabled	是否禁用
size-change	pageSize 改变时会触发  
current-change	currentPage 改变时会触发 

 <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage4"
      :page-sizes="[100, 200, 300, 400]"
      :page-size="100"
      layout="total, sizes, prev, pager, next, jumper"
      :total="400">
    </el-pagination>

4. el-form

model	      表单数据对象
rules	      表单验证规则
validate      对整个表单进行校验的方法,参数为一个回调函数。
              该回调函数会在校验结束后被调用,并传入两个参数:
              是否校验成功和未通过校验的字段。若不传入回调函数,则会返回一个 promise
prop	      单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的
label	      标签文本
validator     自定义校验规则


<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px">
  <el-form-item label="活动名称" prop="name">  // 表单检验必须传prop
    <el-input v-model="ruleForm.name"></el-input>
  </el-form-item>
</el-form>


export default {
    data() {
      return {
        ruleForm: {  // 表单数据
          name: '',
       },
        rules: {  // 校验规则
          name: [
            // 必填   提示   失去焦点时触发
            { required: true,  message: '请输入活动名称', trigger: 'blur' },
            {validator: (rule, value, callback) => {
             // 自定义校验规则
               value === this.ruleForm.name ? callback() : callback(new Error('两次输入不一致')
               // value 是当前值  callback() 是放行  里面实例化一个error 可以提示错误信息
            }, // 其他规则 }
          ],
       }
     }
   },
  methods:{
    async submit(){
       this.$refs.ruleForm.validate(val){
          // val 兜底校验后通过就是true
            if(val) {  后续操作 }
       }

       -----------
        前面提到如果兜底校验时,不传入回调,就会返回一个promise
       await this.$refs.ruleForm.validate()       //如果校验通过,就执行下方代码
       // 后续操作
    }
  }
}

 最近在公司比较空闲,就简单整理了一下,一些简单的element组件的使用,希望能给你带来帮助