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 相关文章推荐
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 Javascript
vue双向绑定的简单实现
Dec 22 Javascript
JS仿JQuery选择器功能
Mar 08 Javascript
javascript实现滑动解锁功能
Mar 22 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
Sep 05 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
Mar 16 Javascript
vue项目首屏打开速度慢的解决方法
Mar 31 Javascript
了解在JavaScript中将值转换为字符串的5种方法
Jun 06 Javascript
JS中的算法与数据结构之列表(List)实例详解
Aug 16 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
Dec 09 Javascript
vue el-tree 默认展开第一个节点的实现代码
May 15 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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
Joomla开启SEF的方法
2016/05/04 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
js中有关IE版本检测
2012/01/04 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
python中pow函数用法及功能说明
2020/12/04 Python
python自动化办公操作PPT的实现
2021/02/05 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
历史系自荐信范文
2013/12/24 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
新闻学专业求职信
2014/07/28 职场文书
公司授权委托书范文
2014/09/21 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
python 调用js的四种方式
2021/04/11 Python
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
Java 在线考试云平台的实现
2021/11/23 Java/Android
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers