介绍
fish-select 是基于Element UI 的 Select 选择器 封装的组件,具有灵活的配置,以及强大的功能,支持自定义模版。
用法
基础用法
适用广泛的基础单选,简化了option的配置、数据绑定和展示字段。
<template><fish-select v-model="value" :data-list="dataList" ></fish-select></template><script>export default {data() {return {value: '',dataList: [{value: '选项1',label: '黄金糕'}, {value: '选项2',label: '双皮奶'}, {value: '选项3',label: '蚵仔煎'}, {value: '选项4',label: '龙须面'}, {value: '选项5',label: '北京烤鸭'}],}}}</script>
异步获取数据
新添加了直接获取异步数据的方法,支持入参配置
<template><fish-select v-model="value" :params='params' :get-list="getList" ></fish-select></template><script>export default {data() {return {value: null,dataList: [{value: '选项1',label: '黄金糕'}, {value: '选项2',label: '双皮奶'}, {value: '选项3',label: '蚵仔煎'}, {value: '选项4',label: '龙须面'}, {value: '选项5',label: '北京烤鸭'}],params:{id:1}}},methods: {getList(params) {console.log('getList 参数',params)return new Promise(reslove=>{setTimeout(()=>{reslove(this.dataList)},2000)})},}}</script>
远程搜索
大大简化了远程搜索的配置项
<template><fish-select v-model="value" :get-list="remoteMethod" remote ></fish-select></template><script>export default {data() {return {value: null,dataList: [{value: '选项1',label: '黄金糕'}, {value: '选项2',label: '双皮奶'}, {value: '选项3',label: '蚵仔煎'}, {value: '选项4',label: '龙须面'}, {value: '选项5',label: '北京烤鸭'}],params:{id:1}}},methods: {remoteMethod(params) {console.log('remoteMethod 参数',params)return new Promise(reslove=>{setTimeout(()=>{if(params.keyWord){reslove(this.dataList)}else{reslove([])}},2000)})},}}</script>
扩展事件
更多扩展事件的使用,比如获取当前选择数据等。
<template><fish-selectv-model="value"@selectList="setSelectList"@currentObj="currentObj":get-list="getList":params='params'></fish-select></template><script>export default {data() {return {value: null,dataList: [{value: '选项1',label: '黄金糕'}, {value: '选项2',label: '双皮奶'}, {value: '选项3',label: '蚵仔煎'}, {value: '选项4',label: '龙须面'}, {value: '选项5',label: '北京烤鸭'}],params:{id:1}}},methods: {getList(params) {console.log('getList 参数',params)return new Promise(reslove=>{setTimeout(()=>{reslove(this.dataList)},2000)})},setSelectList(arr) {console.log('setSelectList',arr)},currentObj(obj) {console.log('currentObj',obj)}}}</script>
其他使用
更多使用示例,包含禁用,基础多选,基础多选自定义模版等。
<template><label>禁用</label><fish-select v-model="value" :data-list="dataList" disabled></fish-select><label>基础多选</label><fish-select v-model="value1" multiple :data-list="dataList" ></fish-select><label>基础多选自定义模板</label><fish-selectv-model="value1"multiple:data-list="dataList":custom-render="customRender"collapse-tags></fish-select></template><script>export default {data() {return {value: null,value1: [],dataList: [{value: '选项1',label: '黄金糕'}, {value: '选项2',label: '双皮奶'}, {value: '选项3',label: '蚵仔煎'}, {value: '选项4',label: '龙须面'}, {value: '选项5',label: '北京烤鸭'}],params:{id:1}}},methods: {customRender(h, item) {return (<div><span style="float: left">{item.label}</span><span style="float: right; color: #8492a6; font-size: 13px">{item.value}</span></div>);},getList(params) {console.log('getList 参数',params)return new Promise(reslove=>{setTimeout(()=>{reslove(this.dataList)},2000)})},setSelectList(arr) {console.log('setSelectList',arr)},currentObj(obj) {console.log('currentObj',obj)}}}</script>
配置项
封装的配置项及说明,其他配置和事件请参照 el-select
Props
| 字段 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| params | 请求参数 | object | {} |
| valueKey | 对应数据绑定和展示字段 | Object | { label: ‘label’, value: ‘value’ } |
| dataList | 下拉数据 | array | [] |
| getList | 异步获取数据的方法,当dataList不为空时不执行该方法 | promise | - |
| filterable | 是否可搜索 | boolean | true |
| clearable | 是否可清楚 | boolean | true |
| customRender | 自定义模版 | Function | - |
Events
| 事件名称 | 说明 | 回调参数 |
|---|---|---|
| selectList | 当异步请求数据时成功回调 | 当前下拉数据 array |
| currentObj | 当前选中或清除时回调 | 当前选中的数据 object、null |
