微信小程序自定义导航隐藏和显示功能


Posted in Javascript onJune 13, 2017

微信小程序中不能直接操作window对象,document文档,跟html的树结构不相同。

实现类似导航的隐藏显示,如图效果:

微信小程序自定义导航隐藏和显示功能

点击网络显示或隐藏网络中包含的内容。其他类似。

如果是jquery很方便实现,能直接操作document。在微信小程序中实现思路是:在逻辑层定义变量,通过setData赋值。

方法一:通过变量直接赋值,给每一个要控制显示的view定义变量

.wxml 代码:

<!--index.wxml-->
<view class="navView" bindtap="tigger" data-num="1">视图容器</view>
<view class="classname" hidden="{{view1}}">
 <button bindtap="opentype" data-type="view">view</button>
 <button bindtap="opentype" data-type="movable">movable</button>
</view>
<view class="navView" bindtap="tigger" data-num="2">基础内容</view>
<view class="classname" hidden="{{view2}}">
<button bindtap="opentype" data-type="icon">icon</button>
<button bindtap="opentype" data-type="text">text</button>
<button bindtap="opentype" data-type="progress">progress</button>
</view>
<view class="navView" bindtap="tigger" data-num="3">表单组件</view>
<view class="classname" hidden="{{view3}}">
<button bindtap="opentype" data-type="button">button</button>
<button bindtap="opentype" data-type="checkbox">checkbox</button>
<button bindtap="opentype" data-type="form">form</button>
<button bindtap="opentype" data-type="input">input</button>
<button bindtap="opentype" data-type="label">label</button>
<button bindtap="opentype" data-type="picker">picker</button>
<button bindtap="opentype" data-type="textarea">textarea</button>
</view>

.js对应代码:

data: {
  view1: true,
  view2: true,
  view3: true
 },
 opentype: function (e) {
  var url = e.currentTarget.dataset.type
  url = url + '/' + url
  wx.navigateTo({
   url: url
  })
 },
 tigger: function (e) {
  var num = e.currentTarget.dataset.num
  if (num == 1) {
   this.setData({
    view1: !this.data.view1
   })
  } else if (num == 2) {
   this.setData({
    view2: !this.data.view2
   })
  } else if (num == 3) {
   this.setData({
    view3: !this.data.view3
   })
  }
}

通过data-num="1" 这中传值方式,设置对应的view1的值。

这种方法能够实现效果,但是在添加了新的view之后需要修改js代码,所以不是最优的方法。

方法二:

.wxml 代码:

<!--index.wxml-->
<view class="navView" bindtap="tigger" data-num="0">网络</view>
<view class="classname" hidden="{{showArr[0]}}">
 <button bindtap="opentype" data-url="network/request/request">request</button>
</view>
<view class="navView" bindtap="tigger" data-num="1">上传、下载</view>
<view class="classname" hidden="{{showArr[1]}}">
 <button bindtap="opentype" data-url="uploadFile">uploadFile</button>
 <button bindtap="opentype" data-url="downloadFile">downloadFile</button>
</view>
<view class="navView" bindtap="tigger" data-num="2">WebSocket</view>
<view class="classname" hidden="{{showArr[2]}}">
 <button bindtap="opentype" data-url="connectSocket">connectSocket</button>
 <button bindtap="opentype" data-url="downloadFile">OnSocketOpen</button>
</view>
<view class="navView" bindtap="tigger" data-num="3">媒体</view>
<view class="classname" hidden="{{showArr[3]}}">
 <button bindtap="opentype" data-url="uploadFile">图片</button>
 <button bindtap="opentype" data-url="downloadFile">录音</button>
</view>

.js对应代码:

// index.js
var statusArrs = [false]
Page({
 /**
  * 页面的初始数据
  */
 data: {
  showArr: statusArrs
 },
 opentype: function (e) {
  var url = e.currentTarget.dataset.url
  url = '../' + url
  wx.navigateTo({
   url: url
  })
 },
 //显示隐藏
 tigger: function (e) {
  var that = this;
  var num = e.currentTarget.dataset.num
  statusArrs[num] = !statusArrs[num]
  that.setData({
   showArr: statusArrs
  })
 }
})

方法二这种方式就简单实现了不修改js代码,添加了新的view也能控制隐藏显示。

以上所述是小编给大家介绍的微信小程序自定义导航隐藏和显示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript自定义日期格式化函数详细解析
Jan 14 Javascript
使用js操作css实现js改变背景图片示例
Mar 10 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
May 06 Javascript
JavaScript中的原始值和复杂值
Jan 07 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
Jul 07 Javascript
js 轮播效果实例分享
Dec 28 Javascript
基于JavaScript实现全选、不选和反选效果
Feb 15 Javascript
Vue from-validate 表单验证的示例代码
Sep 26 Javascript
Vue无限滑动周选择日期的组件的示例代码
Jul 18 Javascript
微信小程序日期选择器实例代码
Jul 18 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
Aug 31 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
Sep 25 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
Jun 13 #Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
Jun 13 #Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
Jun 13 #Javascript
angularjs之$timeout指令详解
Jun 13 #Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 #Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 #Javascript
angular-ngSanitize模块-$sanitize服务详解
Jun 13 #Javascript
You might like
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
jquery自定义插件——window的实现【示例代码】
2016/05/06 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
以一段代码为实例快速入门Python2.7
2015/03/31 Python
python如何爬取个性签名
2018/06/19 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
在python 中实现运行多条shell命令
2019/01/07 Python
python实现串口通信的示例代码
2020/02/10 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
优秀士兵个人事迹材料
2014/01/19 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
新闻稿件写作技巧
2015/07/18 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
MySQL数据库事务的四大特性
2022/04/20 MySQL