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


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 相关文章推荐
JQuery操作tr和td内容的方法实例
Mar 06 Javascript
javascript中encodeURI和decodeURI方法使用介绍
May 06 Javascript
JavaScript中的acos()方法使用详解
Jun 14 Javascript
JS实现双击编辑可修改状态的方法
Aug 14 Javascript
JavaScript中实现Map的示例代码
Sep 09 Javascript
实例讲解JavaScript中的this指向错误解决方法
Jun 13 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 Javascript
Vue父子模版传值及组件传值的三种方法
Nov 27 Javascript
详解html-webpack-plugin用法全解
Jan 22 Javascript
vue  自定义组件实现通讯录功能
Sep 30 Javascript
vue中使用vue-cli接入融云实现即时通信
Apr 19 Javascript
微信小程序如何调用json数据接口并解析
Jun 29 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
YB217、YB235、YB400浅听
2021/03/02 无线电
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
微信小程序实现星级评价
2019/11/20 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
python的绘图工具matplotlib使用实例
2014/07/03 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
python调用摄像头显示图像的实例
2018/08/03 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
管理科学大学生求职信
2013/11/13 职场文书
地震捐款倡议书
2014/08/29 职场文书
金陵十三钗观后感
2015/06/04 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android