今天遇见一个问题,在使用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. after_request 可以直接用于接口日志

  2. Java IO 框架整理

    昨天笔试时碰到了IO流的题目,很久没接触IO编程了,所以那道题目做的不行. 搜了一下,这篇文章总结的很有条理,果断转载. 转自:http://tanshenghui.javaeye.com/blog/ ...

  3. Element-ui 表单嵌套验证

    1.当表单的字段值是数组或者对象时的rules配置 对象:直接用obj.xx配置rules和prop 数组:用list.index.xx配置rules和prop <el-form :model= ...

  4. ESRI资源

    AO帮助 http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/: 桌面帮助 10.1:http://resources. ...

  5. WebSocket事件

    优点 双通信,减少延迟 四个主要的Web Socket API事件: ·打开 onopen 当在客户端和服务器建立连接,就会从Web Socket实例触发open事件.它被称为客户端和服务器之间的初始 ...

  6. uni-app小程序项目使用iconfont字体图标

    前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app. 为什么要这么做? 借 ...

  7. [Java]多个参数的非空判断,不要再使用多个if挨个判断了!(多参数非空判断技巧)

    先上示例代码: if (StringUtils.isAnyBlank(form, to, subject, content)) { log.error("发送人,接收人,主题,内容均不可为空 ...

  8. Vscode实现应用qss样式表

    qss简介 qss(Qt Style Sheets)是一种基于CSS的样式语言,用于描述用户界面元素的外观和感觉.qss可以让用户在不修改代码的情况下,轻松地自定义应用程序的外观. 其语法基本如下: ...

  9. Alpine介绍与apk的基本使用

    前言 Alpine是一个面向安全的轻量级的Linux发行版,相比与CentOS,ubuntu体积小很多,大约只有5M左右,由于体积小的原因,在很多场景下都会使用它来按需制作一些轻量级镜像,虽然体积小但 ...

  10. liquibase maven

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...