自定义select组件
(声明:当前记录篇参考于该人员 https://www.jb51.net/article/166679.htm )
一、创建组件
1.新建文件夹:select
2.新建Component: select
3.select.wxml:
<view style="width:{{_width}};height:{{_height}};" class="selectOuter">
<input value="{{picker_value}}" class="select-input" bindinput="bindkeyinput" />
<picker
style="width:30%;height:100%;"
bindchange="bindchange"
value="{{ list2[index][actualvalue] }}"
range-key="{{ showvalue }}"
range="{{ list2 }}">
<view class='select-icon'>
<image src="../../static/images/xialajiantou.png" />
</view>
</picker>
</view>
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文件:
<select
id="SelectID"
list="{{Array }}"
_width="100%"
_height="100%"
bind:action="handleChange"
actualvalue="id"
showvalue="name">
</select>
(注:Array换成自己的集合)
自定义select组件的更多相关文章
- vue自定义select组件
1.目的 看了很多element-ui的源码,决定自己实现一个简单的select组件,遇到的几个难点,便记录下来. 2.难点一 element-ui中的select组件通过v-model可以绑定数据, ...
- 微信小程序之自定义select下拉选项框组件
知识点:组件,animation,获取当前点击元素的索引与内容 微信小程序中没有select下拉选项框,所以只有自定义.自定义的话,可以选择模板的方式,也可以选择组件的方式来创建. 这次我选择了组件, ...
- WeChat-SmallProgram:自定义select下拉选项框组件
1):创建组件所需的文件 2):自定义组件 CSS 及 JS 组件的wxml: <view class='com-selectBox'> <view class='com-sCont ...
- 基于Bootstrap里面的Button dropdown打造自定义select
最近工作非常的忙,在对一个系统进行改版.项目后台是MVC1.0开发的,但是前端部分已经改过几个版本,而已之前的设计师很强大,又做设计又做前端开发.而已很时尚和前沿,使用了一直都很热门的Bootstra ...
- 基于JQ的自定义弹窗组件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue 自定义分页组件
vue2.5自定义分页组件,可设置每页显示条数,带跳转框直接跳转到相应页面 Pagination.vue 效果如下图: all: small(只显示数字和上一页和下一页): html <temp ...
- vue自定义分页组件---切图网
vue2.5自定义分页组件 Pagination.vue,可设置每页显示条数,带跳转框直接跳转到相应页面,亲测有用.目前很多框架自带有分页组件比如elementUI,不过在面对一个拿到PSD稿,然后重 ...
- SSIS自定义数据流组件开发(血路)
由于特殊的原因(怎么特殊不解释),需要开发自定义数据流组件处理. 查了很多资料,用了不同的版本,发现各种各样的问题没有找到最终的解决方案. 遇到的问题如下: 用VS2015编译出来的插件,在SSDTB ...
- Android Studio开发基础之自定义View组件
一般情况下,不直接使用View和ViewGroup类,而是使用使用其子类.例如要显示一张图片可以用View类的子类ImageView,开发自定义View组件可分为两个主要步骤: 一.创建一个继承自an ...
- [UE4]自定义MovementComponent组件
自定义Movement组件 目的:实现自定义轨迹如抛物线,线性,定点等运动方式,作为组件控制绑定对象的运动. 基类:UMovementComponent 过程: 1.创建UCustomMovement ...
随机推荐
- kubernetes client-go功能介绍
原味地址 https://haiyux.cc/2023/02/26/k8s-client-go/ client-go是什么? client-go是Kubernetes官方提供的Go语言客户端库,用于与 ...
- Mars3D入门示例
1. 引言 Mars3D是基于Cesium的Web端的三维GIS库,对Cesium做了进一步封装和扩展 Mars3D官网:Mars3D三维可视化平台 | 火星科技 Mars3D开发手册:开发教程 - ...
- Java项目常用的异常处理
一.常见异常形式 1.空指针异常(java.lang.nullpointerexception)发生该情况一般是字符串变量未初始化,数组未初始化,类对象未初始化等.还有一种情况是当该对象为空时你并没有 ...
- Landsat数据在USGS中无法下载Surface Reflectance产品的解决方法
本文介绍在USGS官网下载Landsat遥感影像数据时,出现报错信息,无法下载地表反射率产品(Surface Reflectance)的解决办法. 最近,利用这篇文章批量下载Landsat遥感 ...
- 前端js下载excel
// 1.文件流下载文件: export function axiosPostExport(url, data, fileName, suffix = '.xlsx') { url = get ...
- python + pyqt 实现的你下载css背景图片的小工具(最终版)
学习python有三个星期了,算是做的第一个小工具,其实也没必要做成图形界面,只是为的GUI学习(再说技术总归给人使用的,熟练很多shell命令只是个"匠人".) win8下面: ...
- python容易被忽略的问题
1.int()强制转换浮点数 在int()的强制转换浮点数时候,不管是正数还是负数,只取整数部分. print(int(6.235)) # 6 print(int(-6.235)) # -6 注意:这 ...
- hexo-theme-tree
Hexo 主题 Tree 一个简洁的主题,主要功能是 "树状导航" + "树状目录",可选配"评论"和"阅读量"功能,支 ...
- python查找文件、移动、重命名、压缩
在文件同级目录下存在sourcefile.targetfile两个文件夹,源文件放在sourcefile import os import shutil Apath = os.path.dirname ...
- Vue.js中使用iView日期选择器并设置开始时间结束时间校验
废话不多说直接上代码,拷贝代码保存为 html 文件,用浏览器打开就可以看到效果. 在线查看效果:https://run.iviewui.com/PmGsUW3P 1 <!DOCTYPE htm ...