更新记录
1.0.0(2024-12-07)
下载此版本
有问题请联系作者
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 3.1.0 app-vue app-nvue |
√ |
√ |
√ |
√ |
√ |
√ |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
鸿蒙元服务 |
√ |
√ |
√ |
√ |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
使用示例
<template>
<view style="padding: 30rpx;box-sizing: border-box;">
<view v-for="i in value">{{i}}</view>
<view style="height: 100px;"></view>
<!-- 本地数据 过滤 搜索 单选 创建新选项-->
<sh-select :localdata="data" v-model="value" :filterMethod="filterMethod" search allowCreate/>
<view style="height: 100px;"></view>
<!-- 远程数据 分页 搜索 多选 创建新选项 缓存数据-->
<sh-select :pageMethod="pageMethod" v-model="value" valueKey="id" labelKey="name" search allowCreate multiple :cache="true"/>
</view>
</template>
<script>
export default {
data() {
return {
value: '',
remoteData: [
{"name":"Alabama","id":0},{"name":"Alaska","id":1},{"name":"Arizona","id":2},{"name":"Arkansas","id":3},{"name":"California","id":4},{"name":"Colorado","id":5},{"name":"Connecticut","id":6},{"name":"Delaware","id":7},{"name":"Florida","id":8},{"name":"Georgia","id":9},{"name":"Hawaii","id":10},{"name":"Idaho","id":11},{"name":"Illinois","id":12},{"name":"Indiana","id":13},{"name":"Iowa","id":14},{"name":"Kansas","id":15},{"name":"Kentucky","id":16},{"name":"Louisiana","id":17},{"name":"Maine","id":18},{"name":"Maryland","id":19},{"name":"Massachusetts","id":20},{"name":"Michigan","id":21},{"name":"Minnesota","id":22},{"name":"Mississippi","id":23},{"name":"Missouri","id":24},{"name":"Montana","id":25},{"name":"Nebraska","id":26},{"name":"Nevada","id":27},{"name":"New Hampshire","id":28},{"name":"New Jersey","id":29}
],
data: [
'Alabama',
'Alaska',
'Arizona',
'Arkansas',
'California',
'Colorado',
'Connecticut',
'Delaware',
'Florida',
'Georgia',
'Hawaii',
'Idaho',
'Illinois',
'Indiana',
'Iowa',
'Kansas',
'Kentucky',
'Louisiana',
'Maine',
'Maryland',
'Massachusetts',
'Michigan',
'Minnesota',
'Mississippi',
'Missouri',
'Montana',
'Nebraska',
'Nevada',
'New Hampshire',
'New Jersey',
],
}
},
methods: {
// 模拟分页接口请求
pageMethod(page, value) {
console.log(`当前页-> ${page} 搜索关键字-> ${value}`);
if (value) {
return this.remoteData.filter(item => item.name.includes(value))
}
return this.remoteData.slice((page-1) * 7, page * 7)
},
filterMethod(item, value) {
return item.toLowerCase().includes(value.toLowerCase())
}
}
}
</script>
组件预览地址
属性 Props
属性 |
类型 |
默认值 |
说明 |
v-model |
Array |
[] |
所选中的值 |
localdata |
Array |
[] |
本地数据值 |
multiple |
Boolean |
false |
是否多选 |
search |
Boolean |
false |
允许搜索或者过滤 |
cache |
Boolean |
true |
当使用pageMethod时,是否缓存数据,默认为true,会缓存数据,下次不再重新加载数据,当为false时,每次打开都重新加载数据 |
allowCreate |
Boolean |
false |
允许创建新的选项 |
labelKey |
String |
|
当数据源为数组对象时所展示的字段名称 |
valueKey |
String |
|
当数据源为数组对象时取值的字段名称 |
placeholder |
String |
|
|
height |
String |
300rpx |
弹窗滚动区域高度 |
inputAlign |
String |
left |
输入框文本对齐方式,同css text-align属性 |
color |
String |
#1e90ff |
选中icon颜色 |
borderColor |
String |
#f2f2f2 |
边框颜色 |
filterMethod |
(item, value) => Boolean |
|
自定义过滤方法 |
pageMethod |
(page, value) => Promise<Array> |
|
自定义远程数据加载分页方法,需返回一个数组对象或者一个Promise数组对象 |
事件 Emits
插槽名 |
说明 |
change |
每次选择后会调用该事件,参数为所选的值的数组 |
插槽 Slots
插槽名 |
说明 |
option |
自定义选项展示 #option="{ data }" |
empty |
无数据展示样式 |
header |
弹窗头部内容 |
footer |
弹窗底部内容 |
方法 Exposes
方法名 |
说明 |
init |
手动重新初始化数据,一般用于数据源为远程数据时,数据更新后需要重新初始话数据 |