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+ajax实现顶一下,踩一下效果
Jul 17 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
常用的JQuery函数及功能小结
Mar 24 Javascript
jquery常用的12个小功能
Jul 22 Javascript
jQuery获取file控件中图片的宽高与大小
Aug 04 Javascript
vue2项目使用sass的示例代码
Jun 28 Javascript
Vue2.0系列之过滤器的使用
Mar 01 Javascript
通过JS运行机制的角度说说作用域
Mar 12 Javascript
layui实现数据分页功能(ajax异步)
Jul 27 Javascript
vue2路由基本用法实例分析
Mar 06 Javascript
TypeScript的安装、使用、自动编译的实现
Apr 10 Javascript
Promise静态四兄弟实现示例详解
Jul 07 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/11/09 PHP
PHP游戏编程25个脚本代码
2011/02/08 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
JS打印组合功能
2016/08/04 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
python抓取文件夹的所有文件
2018/02/27 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
Linux的文件类型
2016/07/05 面试题
工作表现评语
2014/01/19 职场文书
合伙协议书
2014/04/23 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技