今天遇见一个问题,在使用picker-view的时候;
出现我选择的值和输出的值不一致;
经过与官方的demo做对比发现; 官方是实时的将值从组件中向上抛出去;
值是从change事件传递出去的 而我为了减少实时的想父组件传递值;
我将这个值存起来了的;
在用户点击确认的时候;
我才向上将值抛出去; 结果发现了一个问题
这个问题就是在我快速选择的时候;
我选择的值和输出的值不一致 因为当我快速选择的时候,造成异步;
如何解决:
使用change事件实时的将值抛出去

组件

下面的代码我使用了uni-popup这个弹框组件,这个组件是非常强大的哈;

有时间可以研究一下这个组件

<template>
<view>
<uni-popup ref="onlyhover" type="bottom" :maskClick=true>
<view class="date-select">
<view class="demo-flex">
<view class="select-time">
选择时长
</view>
<view class="of-sourceof" @click="closemask">
确认
</view>
</view>
<picker-view class="picker-view"
:value="defaultValue"
@pickstart="pickstart"
@change="bindChange">
<picker-view-column>
<view class="item" v-for="(item,index) in hoverhover" :key="index">{{item}}小时</view>
</picker-view-column>
</picker-view>
</view>
</uni-popup>
</view>
</template>


<script>
export default {
data() {
return {
selectscooldata:{},
title: 'picker-view',
hoverhover:[0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8],
defaultValue:[2],//默认选中hoverhover中下标为2的那个元素
//defaultValue是默认展示的值,你要注意,如果hoverhover是动态循环出来时,你在data中直接给默认值,可能不能够显示你想要展示的值
}
}, methods: {
pickstart(){
console.log(1)
}, /**
* uniapp中,向上传递值得时候,不要在关闭事件中进行传递值;
* 因为关闭事件中有可能形成异步(造成选择的值和页面显示的值不一致这个问题)
* 使用change事件将值抛出去
* */
bindChange(e) {
console.log('gundong',e)
this.selectscooldata=e;
if(e.detail&&e.detail.value ){
//实时将用户选择的值抛出去
this.$emit('changeCont',this.hoverhover[e.detail.value[0]] )
}else{
// 用户没有滚动,说明用户选择的是我们给用户展示的默认值
}
},
date(e) {
this.$refs.onlyhover.open(); }, fatheropen(){
this.$refs.onlyhover.open();
}, fathClose(){
this.$refs.onlyhover.close();
}, /**
* 确认按钮,没有值得时候去寻找默认值
* */
closemask(){
if(this.selectscooldata.detail&&this.selectscooldata.detail.value ){
//
}else{
//此时用户选择的是默认值,在点击的时候抛出去
let cont=this.hoverhover[this.defaultValue[0]];
this.$emit('changeCont',cont )
} }
}
}
</script> <style scoped lang="scss"> .date-select {
width: 100%;
height: 500rpx;
border-top-left-radius: 40rpx;
border-top-right-radius: 40rpx;
background-color: #FFFFFF;
position: relative;
.picker-view {
background-color: #EEEEEE;
position: absolute;
width: 100%;
height: 388rpx;
bottom: 20rpx;
.item {
height: 88rpx;
line-height: 68rpx;
font-size: 32rpx;
text-align: center;
}
}
.btn{
width: 100%;
height: 100rpx;
box-sizing: border-box; .btn-left,.btn-right{
color: #FFFFFF;
width: 150upx;
height: 90upx;
line-height: 90upx;
text-align: center;
border-radius: 15upx;
} }
} .demo-flex{
display: flex;
align-items: center;
.select-time{
height:96rpx;
line-height: 96rpx;
font-size: 32rpx;
font-family: "PingFangSC, PingFangSC-Medium";
font-weight: 500;
text-align: center;
color: #323233;
flex: 1;
padding-left: 90rpx; }
.of-sourceof{ height:96rpx;
line-height: 96rpx;
font-size: 30rpx;
font-family: "PingFangSC, PingFangSC-Regular";
text-align: center;
color: #3388ff;
padding-right: 32rpx;
}
}
</style>

uni-app中picker-view(常见的坑)出现选择值与输出的值不一致的更多相关文章

  1. uni app中使用自定义图标库

    项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...

  2. uni-app中picker组件的一个坑

    这里直接贴出代码 <view class="goods-info-add fl-sw"> <view>运费模板:</view> <view ...

  3. phonegap开发app中踩过的那些坑

    把遇到的问题列出来,假设有解决方式的,偶也会写下来.假设大家有更好解决方法的.欢迎留言噢 phonegap 2.9无法触发deviceready事件 亲们能够看下控制台有木有报错.假设有提示cordo ...

  4. app中h5交互的一些坑 记录笔记

    1.ios开发镶嵌 h5页面 存在input 圆角问题(安卓直角) 解决办法 inpput{ -webkit-appearance: none; border-radius: 0px; } 2.ios ...

  5. 反射另一个app中的View

    FrameLayout fl = (FrameLayout) findViewById(R.id.content); View v = null; try { Context context = cr ...

  6. uni app中关于图片的分包加载

    因为在项目中使用了大量的静态资源图片,使得主包体积过大, 而把这些图片全部放到服务器又有点麻烦,就想能不能把图片也分包,但是直接放在分包下的话导致图片资源找不到了, 在社区中看到大佬分享的十分有用,特 ...

  7. uni-app(Vue)中(picker)用联动(关联)选择以至于完成某些功能

    如下图所示,在项目中需求是通过首先选择学生的专业,选好之后在每个专业下面选择对应的学期,每个学期有对应的学费,因此就需要联动选择来实现这一功能. 以下仅展示此功能主要代码: <div class ...

  8. .Net Core 迁移之坑二 《ToString("F") 输出与windows不一致问题》

    大家都知道 ToString("F") 是干什么的 这里我还是介绍一下 格式字符串采用以下形式:Axx,其中 A 为格式说明符,指定格式化类型,xx 为精度说明符,控制格式化输出的 ...

  9. 详讲H5、WebApp项目中常见的坑以及注意事项

    首先我们中会有一些常用的meta标签,如下: <!--防止手机中网页放大和缩小--> <meta name="viewport" content="wi ...

  10. Android中常见的坑有哪些?

    对于安卓开发入门级程序猿而言,由于不熟悉代码.工具等等,掉进一些坑中是难免的,今天小编在网上看到一位大神总结的Android开发中比较常见的坑及其原因和解决办法,赶脚还不错,分享出来,给大家提个醒. ...

随机推荐

  1. 洛谷P4913【深基16.例3】二叉树深度题解

    很简单的二叉树遍历问题,可以用dfs(深度优先搜索)解决. 看到数据范围,最大不超过 \(10^6\) ,可以不开 long long (但我还是习惯性地开了) 接下来上代码: #include< ...

  2. npm link的作用——避免频繁发布更新

    web-components  里面的组件库 修改频繁 可以使用link 创建链接,引用放就不需要每次都重新发布重新安装更新了 功能 在本地开发npm模块的时候,我们可以使用npm link命令,将n ...

  3. 源码剖析之sun.misc.Unsafe

    首先介绍一下什么是Compare And Swap(CAS)?简单的说就是比较并交换. CAS 操作包含三个操作数 -- 内存位置(V).预期原值(A)和新值(B).如果内存位置的值与预期原值相匹配, ...

  4. golang之Time时间函数

    在编程中,我们经常会遭遇八小时时间差问题.这是由时区差异引起的,为了能更好地解决它们,我们需要理解几个时间定义标准. GMT(Greenwich Mean Time),格林威治平时.GMT 根据地球的 ...

  5. SMOS-II 电梯综合监控系统程序(电梯IC卡解决方案)安装的注意点

    命令提示符下输入命令dir "D:\SMOS-II-CH V3.2" /b /s 回车可返回SMOS II 3.2对应的各文件路径 D:\SMOS-II-CH V3.2\Setup ...

  6. std的map或者set中,比较浮点类型二维三维数据

    在map和set中,如果比较对象是二维或者三维数据,需要把二维三维数据的浮点数转换为比较精度. 如果比较精度是0.001,那么数据的精度也必须是0.001,不然会出现如下情况: 比较函数 struct ...

  7. Nvidia Jetson Xavier NX安装GPU版pytorch与torchvision

    前提是已经安装好了系统,并通过JetPack配置完了cuda.cudnn.conda等库. 1. 安装GPU版pytorch 在base环境上新建环境,python版本3.8,激活并进入. conda ...

  8. R机器学习:朴素贝叶斯算法的理解与实操

    最近又看了很多贝叶斯算法的一些文章,好多的文章对这个算法解释起来会放一大堆公式,对代数不好的人来说真的很头疼.本文尝试着用大白话写写这个算法,再做个例子,帮助大家理解和运用. Naive Bayes ...

  9. 【C#】【MySQL】【配置数据源】SSL Connection error 发生一个或多个错误。由于·意外的数据包格式,握手失败

    [编程语言]C# [数据库]MySQL [控件]SqlDataSource [问题描述]使用SqlDataSource远程连接数据库时,测试连接发生如下错误:"SSL Connection ...

  10. 【前端】CSS实现图片文字对齐 并随着设备尺寸改变而改变大小

    效果预览 HTML源码 点击查看HTML代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <me ...