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和CSS速查手册
Aug 20 Javascript
JS 有名函数表达式全面解析
Mar 19 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
Dec 03 Javascript
微信小程序-详解数据缓存
Nov 24 Javascript
微信小程序 表单Form实例详解(附源码)
Dec 22 Javascript
Javascript中的 “&amp;” 和 “|” 详解
Feb 02 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
Mar 27 Javascript
vue技术分享之你可能不知道的7个秘密
Apr 09 Javascript
vue component 中引入less文件报错 Module build failed
Apr 17 Javascript
layui 富文本赋值,取值,取纯文本值的实例
Sep 18 Javascript
jquery实现的放大镜效果示例
Feb 24 jQuery
Vue路由守卫及页面登录权限控制的设置方法(两种)
Mar 31 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
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
php实现加减法验证码代码
2014/02/14 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
2016/10/21 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
Python中分数的相关使用教程
2015/03/30 Python
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
Pytorch 实现自定义参数层的例子
2019/08/17 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
Python itertools.product方法代码实例
2020/03/27 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
和解协议书
2014/04/16 职场文书
会计学专业求职信
2014/07/17 职场文书
住房租房协议书
2014/08/20 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
车队安全员岗位职责
2015/02/15 职场文书
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang