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的动态添加控件并取值的实现代码
Sep 24 Javascript
浅析javascript闭包 实例分析
Dec 25 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
Oct 17 Javascript
javascript获取checkbox复选框获取选中的选项
Aug 12 Javascript
jQuery对象的selector属性用法实例
Dec 27 Javascript
用javascript实现自动输出网页文本
Jul 30 Javascript
值得分享的轻量级Bootstrap Table表格插件
May 30 Javascript
vue使用 better-scroll的参数和方法详解
Jan 25 Javascript
javaScript动态添加Li元素的实例
Feb 24 Javascript
vue1.0和vue2.0的watch监听事件写法详解
Sep 11 Javascript
JS使用数组实现的队列功能示例
Mar 04 Javascript
如何在vue中使用kindeditor富文本编辑器
Dec 19 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的FTP学习(三)
2006/10/09 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
img标签中onerror用法
2009/08/13 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
javascript每日必学之封装
2016/02/23 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
vue中监听返回键问题
2019/08/28 Javascript
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
Python实现时间序列可视化的方法
2019/08/06 Python
Python 列表的清空方式
2020/01/13 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
个人作风建设自查报告
2014/10/22 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
小学生读书笔记范文
2015/06/30 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript