UNPKG

better-picker

Version:

h5 picker inspired by ios UIPickerView

201 lines (152 loc) 4.42 kB
# picker 移动端最好用的的筛选器组件,高仿 iosUIPickerView ,非常流畅的体验。 ##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 实现,可以直接使用 ##如何使用## html 部分: <div id="name">点我选择</div> 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