自定义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 ...
随机推荐
- 前瞻性研究: axSpA中轴放射学进展延缓得益于TNF抑制剂持续治疗3年
西班牙学者近期发表的这项前瞻性研究是基于axSpA患者注册登记数据库,患者登记入库后,继续治疗和评估3年[1]. 患者分为2组,组1有46例,在登记入库时已经在用肿瘤坏死因子抑制剂(TNFi)且已治疗 ...
- 用C++ 弹奏武侠音乐:沧海一声笑
前言: 参照网路代码,用编程语言来弹奏一首音乐,搞点轻松的 原文:点击此处 完整代码: 以下为Visual Stuido 2022测试可用,控制台程序.运行之后,会自动弹奏沧海一声笑,并且出现歌词.主 ...
- 基于C++的OpenGL 10 之光照贴图
1. 引言 本文基于C++语言,描述OpenGL的光照贴图 前置知识可参考: 基于C++的OpenGL 09 之材质 - 当时明月在曾照彩云归 - 博客园 (cnblogs.com) 笔者这里不过多描 ...
- 全国计算机二级python备考
选择题: https://www.itkaoshi.net/3476.html 操作题: https://www.bilibili.com/video/BV1Zj411f7ey?p=1 经典题讲解: ...
- 魔兽世界2009年更换代理,九城CEO至全体员工公开信
尊敬的全体第九城市员工, 最近一段时间以来,有关九城将要失去<魔兽世界>代理权的说法甚嚣尘上,各种传言四起.在目前来自<魔兽世界>的收入仍占九城收入绝大部分的情况下,对于外界的 ...
- 00.IDEA的使用
1.IDEA的必备常用快捷键 复制本行到下一行:ctrl D 删除一行代码:ctrl Y 替换文本:ctrl R 根据光标放的位置提供快速修复选择:Alt + Enter 生成返回值:ctrl alt ...
- Too many requests in 1 hour. Try again later.的解决办法
原因 你的梯子用的人太多了,openAI本身就有问答频率限制. 解决办法 换个相对独立,没那么多人用的梯子,找个"安静点"的地区.
- UE打LOG整理
Kismet库 蓝图方法cpp使用 例:打LOG:Print String 蓝图节点的鼠标tips:Target is Kismet System Library #include "Run ...
- 一次eureka的事故
本地起了一个微服务(不知道怎么起的),导致注册到微服务上了,不知所措.. 想了下,杀死对应微服务的进程id就可以了(记不住啊!!)
- C# 窗口全屏、置顶、获取焦点
很简单的几行代码 this.FormBorderStyle = FormBorderStyle.None; //设置窗体为无边框样式 this.WindowState = FormWindowStat ...