自定义select组件
(声明:当前记录篇参考于该人员 https://www.jb51.net/article/166679.htm )
一、创建组件
1.新建文件夹:select
2.新建Component: select
3.select.wxml:
4.select.wxss:
.selectOuter {
display: flex;
flex-direction: space-between;
border-radius: 2px;
border: 1px #ccc solid;
}
.select-input {
margin-left: 10rpx;
width: 80%;
height: 100%;
line-height: 60rpx;
font-size: 24rpx;
}
.select-icon {
width: 100%;
height: 100%;
/* background: red; */
display: flex;
align-items: center;
justify-content: flex-end;
}
.select-icon>image {
width: 40rpx;
height: 36rpx;
margin-right: 10rpx;
margin-top: 19rpx;
}
5.select.js:
// components/hui-picker-input.js
const listvalue = [{
id: '1',
name: "张三"
}, {
id: '2',
name: "李四"
}]
let _self;
Component({
/**
* 组件的属性列表
*/
properties: {
list: {//下拉框数据来源
type: [Array, Object],
value: listvalue,
description: '数据源',
observer(newVal, oldVal) {
this.setData({
list: newVal,
list2: newVal
})
}
},
_width: {//组件宽度
type: String,
value: "100rpx"
},
_height: {//组件高度
type: String,
value: "100rpx"
},
actualvalue: { //实际值
type: String,
value: "id"
},
showvalue: { //显示值
type: String,
value: "name"
}
},
/**
* 组件的初始数据
*/
data: {
picker_value: '',//输入框值
index: 0,//下拉框下标
list2: []//下拉框数据
},
created(e) {
_self = this;
},
/**
* 组件的方法列表
*/
methods: {
//文本框输入事件
bindkeyinput(e) {
const _value = e.detail.value
const _showvalue2 = this.data.showvalue;
const _list = JSON.parse(JSON.stringify(this.data.list));
const array = _list.filter(item => item[_showvalue2].indexOf(_value) != -1).map(item => {
const result = JSON.parse(JSON.stringify(item));
return result;
})
this.setData({
list2: array
})
},
//下拉框选择事件
bindchange(e) {
const _idx = e.detail.value;
const _showvalue = this.data.showvalue;
const _actualvalue = this.data.actualvalue;
const list2_value = this.data.list2[_idx][_actualvalue];
this.setData({
index: _idx,
list2: this.data.list,
picker_value: this.data.list2[_idx][_showvalue]
})
this.fun(list2_value);
},
fun(list2_value) {
this.triggerEvent("action", {
id: list2_value
});
},
// 清空input框中的信息。(便于父组件中清除操作使用。)
clearInput() {
var that = this;
that.setData({ picker_value: '', });
}
}
});
二、引用:
1.要引用地方的json文件:
"usingComponents": {
"select": "../../select/select"
}
2.要引用地方的 wxml文件:
(注:Array换成自己的集合)