# picker
**Repository Path**: solocoding/picker
## Basic Information
- **Project Name**: picker
- **Description**: [警告]该库作者不再维护,picker 的维护移交至 cube-ui
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-07-09
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# picker
[](https://www.npmjs.com/package/better-picker)
移动端最好用的的筛选器组件,高仿 ios 的 UIPickerView ,非常流畅的体验。
## Fetures
- 支持单列、多列选择
- 支持动态更新每列的数据
## 依赖(无
~~picker依赖[zepto](http://zeptojs.com/)和[gmu](http://gmu.baidu.com/);
**注意**:gmu.js请使用demo里的[gmu.js](https://github.com/ustbhuangyi/picker/blob/master/demo/gmu.js),gmu的基础库,和官网的略有不同。~~
1.x 版本不再依赖任何 3 方库,原生 JS 实现,可以直接使用
## 如何使用
### 通过npm引入 ###
安装better-picker
```shell
npm install better-picker --save-dev
```
引入better-picker
```javascript
import Picker from 'better-picker'
```
>如果不支持import, 请使用
```javascript
var Picker = require('better-picker')
```
html 部分:
点我选择
JS 部分:
var nameEl = document.getElementById('name');
var data1 = [
{
text: '小美',
value: 1
}, {
text: '猪猪',
value: 2
}
];
var data2 = [
{
text: '张三',
value: 1
},
{
text: '李四',
value: 2
},
{
text: '王五',
value: 3
},
{
text: '赵六',
value: 4
},
{
text: '吴七',
value: 5
},
{
text: '陈八',
value: 6
},
{
text: '杜九',
value: 7
},
{
text: '黄十',
value: 8
},
{
text: '呵呵',
value: 9
},
{
text: '哈哈',
value: 10
},
{
text: '嘿嘿',
value: 11
},
{
text: '啦啦',
value: 12
}
];
var data3 = [
{
text: '开心',
value: 1
}, {
text: '生气',
value: 2
},
{
text: '搞笑',
value: 3
}, {
text: '难过',
value: 4
}
];
var picker = new Picker({
data: [data1, data2, data3],
selectedIndex: [0, 1, 2],
title: '我们都是小学生'
});
picker.on('picker.select', function (selectedVal, selectedIndex) {
nameEl.innerText = data1[selectedIndex[0]].text + ' ' + data2[selectedIndex[1]].text + ' ' + data3[selectedIndex[2]].text;
})
picker.on('picker.change', function (index, selectedIndex) {
console.log(index);
console.log(selectedIndex);
});
picker.on('picker.valuechange', function (selectedVal, selectedIndex) {
console.log(selectedVal);
console.log(selectedIndex);
});
nameEl.addEventListener('click', function () {
picker.show();
});
### options
options.title (String)
筛选器标题,默认为空。
options.data (Array)
筛选器的数据,是一个二维数组,第一维表示多少列数据,第二维表示每列的数据,单个数据是一个 object,由 text 和 value 两个字段组成,text 表示显示在筛选器的文本,value 表示数据的值。
options.selectedIndex (Array)
筛选器初始化默认选择的数据索引,是一个二维数组,第一维表示列的序号,第二维表示每列的行号,从 0 开始。
### 事件
picker.change
当一列滚动停止的时候,会派发 picker.change 事件,同时会传递列序号 index 及滚动停止的位置 selectedIndex。
picker.select
当用户点击确定的时候,会派发 picker.select 事件,同时会传递每列选择的值数组 selectedVal 和每列选择的序号数组 selectedIndex。
picker.cancel
当用户点击取消的时候,会派发picker.cancel事件。
picker.valuechange
当用户点击确定的时候,如果本次选择的数据和上一次不一致,会派发 picker.valuechange 事件,同时会传递每列选择的值数组 selectedVal 和每列选择的序号数组 selectedIndex。
### 编程接口
show (next)
显示筛选器,next 为筛选器显示后执行的回调函数。
hide ()
隐藏筛选器,一般来说,筛选器内部已经实现了隐藏逻辑,不必主动调用。
refill (datas)
重填全部数据,datas为二位数组,如[lists1, lists2, lists3]
refillColumn(index, data)
重填某一列的数据,index为列序号,data为数据数组。
scrollColumn(index, dist)
复位某一列的默认选项,index为列序号,dist为选项的下标,起始值为0
## 如何构建
picker的源码是基于webpack构建的
首先,clone项目源码
```bash
git clone https://github.com/ustbhuangyi/picker.git
```
安装依赖
```bash
cd picker
npm install
```
测试demo页
```bash
npm run dev
```
打开浏览器访问如下地址, 查看效果
> localhost:9090