Vant Weapp组件踩坑:picker的初始赋值解决


Posted in Javascript onNovember 12, 2020

在使用vant的picker组件时,我希望有在页面加载时向数据库获取值来设置picker的默认值。开始我使用官方文档中的default-index属性,并在onLoad方法中进行this.setData()。但是这样做picker的默认索引还是0。

于是我又将setData放入onShow()、onReady()方法,均不奏效。(我真的不知道为什么,新建一个空白页面测试也是这样)

继而我查看官方文档,发现picker有实例方法setIndexes(),于是尝试。

然而我在onLoad()、onReady()方法中通过selectComponent()后再调用方法,还是不奏效。

只有在onReady方法中才可以这样设置索引

wxml:

<van-picker class="picker1" columns="{{columns}}" bind:change="onChange" />

js:(获取到的数据为this.data.index)

onReady(){
 const picker = this.selectComponent('.picker1') //获取组件实例
 picker.setIndexes([this.data.index]) //setIndexes()中的参数是一个数组
}

补充知识:项目总结之关于vue中使用mint-ui的mt-popup出现滚动穿透问题的解决总结

说实话,使用Mint-ui这个ui组件的过程中遇到了很多问题,这个ui组件问题真多。先说今天的主题吧,我在使用popup选择框的时候和datepicker时间选择器的时候出现了滚动穿透的问题,特别是在ios上面。

找了好多方法,最后同事给出了一个好的方法,很简洁,于是就想着总结下来。

防止滚动穿透 只需加入@touchmove.native.stop.prevent 阻止默认根元素的默认事件就可以了,native是关键,这个表示根元素的意思,也就是body或者html

代码如下:

Popup组件:

<mt-popup
     v-model="popupVisible"
     position="bottom">
     ...
  </mt-popup>
  // 防止滚动穿透 只需加入@touchmove.native.stop.prevent 阻止默认根元素的默认事件就可以了native是关键,这个表示根元素的意思,也就是body或者html
  <mt-popup
   v-model="popupVisible"
   position="bottom"
   @touchmove.native.stop.prevent>
   ...
  </mt-popup>

注意当 mt-popup中还有div等子元素的时候,一定要注意,这个时候可能会有一些问题,会出现mt-popup这个元素也滚动不了的情况,所以说如果mt-popup本身不需要滚动的话,加了@touchmove.native.stop.prevent,底部页面就不会跟着滑动,如果mt-popup里面有滚动条需要滚动的话,可能就滚动不了,这个时候需要采取常规方法了,如下:

// 解决方式,通过监听popupVisible变量,在弹窗出现后禁止body节点touchMove事件,弹窗消失后恢复body节点的touchMove事件

//html 如下
   <mt-popup
     v-model="popupVisible"
     position="bottom">
     ...
   </mt-popup>
// js 如下
  const handler = function(e) {
    e.preventDefault();
  }
  
  // vue实例内
  watch: {
    popupVisible: function (val) {
     if(val) {
       document.getElementsByTagName('body')[0].addEventListener('touchmove', this.handler, { passive: false });
     } else {
       document.getElementsByTagName('body')[0].removeEventListener('touchmove', this.handler, { passive: false });
     }
    }
  }

Datetime Picker:

<mt-datetime-picker
    ref="picker"
    type="time"
    v-model="pickerValue"
    @touchmove.native.stop.prevent>
 </mt-datetime-picker>

对于时间组件加了@touchmove.native.stop.prevent,选择时间滚动的时候底部页面就不会跟着滚动了,很完美。

@touchmove.native.stop.prevent可以使我们省好多事,用起来吧!

以上这篇Vant Weapp组件踩坑:picker的初始赋值解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
简单的代码实现jquery定时器
Jan 03 Javascript
javascript获取form里的表单元素的示例代码
Feb 14 Javascript
封装了一个支持匿名函数的Javascript事件监听器
Jun 05 Javascript
js编写当天简单日历效果【实现代码】
May 03 Javascript
jQuery实现动态文字搜索功能
Jan 05 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
Mar 06 Javascript
在一般处理程序(ashx)中弹出js提示语
Aug 16 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
Apr 23 jQuery
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
Dec 15 Javascript
vue2路由基本用法实例分析
Mar 06 Javascript
Vue如何跨组件传递Slot的实现
Dec 14 Vue.js
vue 图片裁剪上传组件的实现
Nov 12 #Javascript
js前端传json后台接收‘‘被转为quot的问题解决
Nov 12 #Javascript
使用Vant完成DatetimePicker 日期的选择器操作
Nov 12 #Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
Nov 11 #Javascript
vant 中van-list的用法说明
Nov 11 #Javascript
让Vue响应Map或Set的变化操作
Nov 11 #Javascript
vue项目中使用rem,在入口文件添加内容操作
Nov 11 #Javascript
You might like
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php数据库备份还原类分享
2014/03/20 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
.NET remoting中对象激活的两种方式
2015/06/08 面试题
优秀的自荐信要注意哪些
2014/01/03 职场文书
银行优秀员工事迹
2014/02/06 职场文书
社会实践评语
2014/04/28 职场文书
高中教师考核方案
2014/05/18 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
关于感谢信的范文
2015/01/23 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
高一数学教学反思
2016/02/18 职场文书
初中政治教学反思
2016/02/23 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书