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学习笔记 delete运算符
Sep 13 Javascript
判断滚动条到底部的JS代码
Nov 04 Javascript
深入理解javascript中return的作用
Dec 30 Javascript
node.js中的http.response.write方法使用说明
Dec 14 Javascript
jQuery+Ajax实现无刷新操作
Jan 04 Javascript
JS实现的在线调色板实例(附demo源码下载)
Mar 01 Javascript
浅谈js中的变量名和函数名重名
Feb 13 Javascript
vue省市区三联动下拉选择组件的实现
Apr 28 Javascript
vue基于Vue2.0和高德地图的地图组件实例
Apr 28 Javascript
浅谈VUE监听窗口变化事件的问题
Feb 24 Javascript
Vue实现类似Spring官网图片滑动效果方法
Mar 01 Javascript
Vue实现根据hash高亮选项卡
May 27 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面向对象全攻略 (七) 继承性
2009/09/30 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
web.py在模板中输出美元符号的方法
2014/08/26 Python
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
python调用c++传递数组的实例
2019/02/13 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
单位人事专员介绍信
2014/01/11 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
单位工作证明格式模板
2014/10/04 职场文书
2015年班组长工作总结
2015/04/10 职场文书
聘任合同书
2015/09/21 职场文书