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中的作用域和上下文深入理解
Jul 03 Javascript
JavaScript中创建对象的模式汇总
Apr 19 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
May 31 Javascript
VUEJS实战之修复错误并且美化时间(2)
Jun 13 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
Dec 27 Javascript
node.js平台下的mysql数据库配置及连接
Mar 31 Javascript
Vue中计算属性computed的示例解读
Jul 26 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
JS实现换肤功能的方法实例详解
Jan 30 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
JS实现点餐自动选择框(案例分析)
Dec 10 Javascript
VUE项目axios请求头更改Content-Type操作
Jul 24 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 clearstatcache()函数详解
2010/03/02 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
python实现简单井字棋游戏
2020/03/04 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
python实现批处理文件
2020/07/28 Python
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
党委书记岗位职责
2013/11/24 职场文书
运动会拉拉队口号
2014/06/09 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
初级党校心得体会
2014/09/11 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python
Java实现简易的分词器功能
2021/06/15 Java/Android
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技