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


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 相关文章推荐
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
Nov 30 Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 Javascript
js中的eventType事件及其浏览器支持性介绍
Nov 29 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
Dec 31 Javascript
Javascript中this的用法详解
Sep 22 Javascript
js正则表达式匹配数字字母下划线等
Apr 14 Javascript
浅谈vue.js中v-for循环渲染
Jul 26 Javascript
ES6中Class类的静态方法实例小结
Oct 28 Javascript
在vue里使用codemirror遇到的问题
Nov 01 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
Feb 27 Javascript
微信小程序实现分享商品海报功能
Sep 30 Javascript
jQuery实现简单弹幕制作
Dec 10 jQuery
深究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&amp;&amp;mysql)五
2006/10/09 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
一个简单的js动画效果代码
2010/07/20 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
python利用datetime模块计算时间差
2015/08/04 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
numpy中索引和切片详解
2017/12/15 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
Python变量访问权限控制详解
2019/06/29 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
.net开发工程师面试题
2014/02/25 面试题
运动会四百米广播稿
2014/01/19 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript