(声明:当前记录篇参考于该人员 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组件的更多相关文章

  1. vue自定义select组件

    1.目的 看了很多element-ui的源码,决定自己实现一个简单的select组件,遇到的几个难点,便记录下来. 2.难点一 element-ui中的select组件通过v-model可以绑定数据, ...

  2. 微信小程序之自定义select下拉选项框组件

    知识点:组件,animation,获取当前点击元素的索引与内容 微信小程序中没有select下拉选项框,所以只有自定义.自定义的话,可以选择模板的方式,也可以选择组件的方式来创建. 这次我选择了组件, ...

  3. WeChat-SmallProgram:自定义select下拉选项框组件

    1):创建组件所需的文件 2):自定义组件 CSS 及 JS 组件的wxml: <view class='com-selectBox'> <view class='com-sCont ...

  4. 基于Bootstrap里面的Button dropdown打造自定义select

    最近工作非常的忙,在对一个系统进行改版.项目后台是MVC1.0开发的,但是前端部分已经改过几个版本,而已之前的设计师很强大,又做设计又做前端开发.而已很时尚和前沿,使用了一直都很热门的Bootstra ...

  5. 基于JQ的自定义弹窗组件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. vue 自定义分页组件

    vue2.5自定义分页组件,可设置每页显示条数,带跳转框直接跳转到相应页面 Pagination.vue 效果如下图: all: small(只显示数字和上一页和下一页): html <temp ...

  7. vue自定义分页组件---切图网

    vue2.5自定义分页组件 Pagination.vue,可设置每页显示条数,带跳转框直接跳转到相应页面,亲测有用.目前很多框架自带有分页组件比如elementUI,不过在面对一个拿到PSD稿,然后重 ...

  8. SSIS自定义数据流组件开发(血路)

    由于特殊的原因(怎么特殊不解释),需要开发自定义数据流组件处理. 查了很多资料,用了不同的版本,发现各种各样的问题没有找到最终的解决方案. 遇到的问题如下: 用VS2015编译出来的插件,在SSDTB ...

  9. Android Studio开发基础之自定义View组件

    一般情况下,不直接使用View和ViewGroup类,而是使用使用其子类.例如要显示一张图片可以用View类的子类ImageView,开发自定义View组件可分为两个主要步骤: 一.创建一个继承自an ...

  10. [UE4]自定义MovementComponent组件

    自定义Movement组件 目的:实现自定义轨迹如抛物线,线性,定点等运动方式,作为组件控制绑定对象的运动. 基类:UMovementComponent 过程: 1.创建UCustomMovement ...

随机推荐

  1. GetShell 之:利用 SQLServer GetShell

    GetShell 之:利用 SQLServer GetShell 目录 GetShell 之:利用 SQLServer GetShell 1 SQLServer 基础操作 2 SQLServer 利用 ...

  2. [BSR文摘] 如何解释CRP正常而多普勒超声显示关节炎活动的RA亚型

    如何解释CRP正常而多普勒超声显示关节炎活动的RA亚型 Braford CM, et al.Rheumatology 2016. Present ID: 72. 背景:临床门诊越来越多地利用肌肉骨骼超 ...

  3. axSpA患者新发炎症更容易发生在既往发生过炎症的区域

    axSpA患者新发炎症更容易发生在既往发生过炎症的区域 EULAR2015; PresentID: SAT0240 NEW INFLAMMATORY LESIONS IN AXIAL SPONDYLO ...

  4. 代码随想录算法训练营day12 | leetcode 239. 滑动窗口最大值 347.前 K 个高频元素

    基础知识 ArrayDeque deque = new ArrayDeque(); /* offerFirst(E e) 在数组前面添加元素,并返回是否添加成功 offerLast(E e) 在数组后 ...

  5. 原生javascript解锁恶心的CSDN强制关注才能阅读让文章自动展开(转部分内容)

    此时你可以打开chrome浏览器的开发者工具 快捷键F12, 然后切换到Console界面 然后复制上面的javascript代码 var article_content=document.getEl ...

  6. Educational Codeforces Round 137 (Rated for Div. 2) - E. FTL

    DP Problem - E - Codeforces 题意 有个 BOSS 有 \(H\;(1<=H<=5000)\) 血量,\(s\) 点防御 有两种武器可用攻击 BOSS,伤害分别为 ...

  7. 使用iperf测试网卡性能

    1.目标 测试网卡通信性能,同时可以通过改变连接方式(从两台PC网线直连,切换到通过交换机连接)测试交换机最高速率性能. 2.使用工具 硬件:两台PC机(本例用win10 64位).数根网线.交换机 ...

  8. 使用 Fiddler Everywhere 进行抓包

    使用 Fiddler Everywhere 进行抓包 开启各项必备功能 在打开浏览器之前需要先开启LiveTraffic为Capturing 然后点击像芯片一样的东西叫Decode(蓝色为开启状态)这 ...

  9. MessageUtil

    1 public abstract class MessageUtil { 2 3 public static String changeMsg(CustomerReportQueryObject q ...

  10. 当越来越多的企业放弃使用FTP,该用什么更好的方式替代?

    FTP作为第一个完整的文件传输协议,在互联网技术发展史上具有浓墨重彩的意义,它解决了文件传输协议有无的问题,在全世界范围内被广泛使用.但如今,随着网络技术的发展,企业生产类型和生产资料的丰富化,文件传 ...