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获取当页面上鼠标光标位置和触发事件的对象的代码
Dec 09 Javascript
让图片旋转任意角度及JQuery插件使用介绍
Mar 20 Javascript
javascript静态页面传值的三种方法分享
Nov 12 Javascript
动态加载jquery库的方法
Feb 12 Javascript
JavaScript学习笔记之JS函数
Jan 22 Javascript
使用AngularJS创建单页应用的编程指引
Jun 19 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
Apr 01 Javascript
Angular2 (RC5) 路由与导航详解
Sep 21 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
Feb 21 Javascript
原生js无缝轮播插件使用详解
Mar 09 Javascript
js实现随机点名功能
Dec 23 Javascript
JavaScript仿京东轮播图效果
Feb 25 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
动易数据转成dedecms的php程序
2007/04/07 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
Python转码问题的解决方法
2008/10/07 Python
Python图算法实例分析
2016/08/13 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
python机器学习库常用汇总
2017/11/15 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
pytorch 常用线性函数详解
2020/01/15 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
采购意向书范本
2014/03/31 职场文书
好习惯伴我成长演讲稿
2014/05/21 职场文书
教师节倡议书2015
2015/04/27 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS