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 相关文章推荐
Javascript 类、命名空间、代码组织代码
Jul 31 Javascript
js DOM 元素ID就是全局变量
Sep 20 Javascript
AngularJS基础知识
Dec 21 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
Aug 21 Javascript
Javascript函数式编程语言
Oct 11 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 Javascript
security.js实现的RSA加密功能示例
Jun 06 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
Mar 07 Javascript
深入了解query和params的使用区别
Jun 24 Javascript
JS实现提示框跟随鼠标移动
Aug 27 Javascript
查找Vue中下标的操作(some和findindex)
Aug 12 Javascript
js实现限定范围拖拽的示例
Oct 26 Javascript
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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
php模板函数 正则实现代码
2012/10/15 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
Python之Web框架Django项目搭建全过程
2017/05/02 Python
python实现报表自动化详解
2017/11/16 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
python实现朴素贝叶斯算法
2018/11/19 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
Python的条件锁与事件共享详解
2019/09/12 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
彪马法国官网:PUMA法国
2019/12/15 全球购物
广州盈通面试题
2015/12/05 面试题
寄语学生的话
2014/04/10 职场文书
工作分析计划书
2014/04/30 职场文书
推普周活动总结
2014/08/28 职场文书
见习报告怎么写
2014/10/31 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书