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


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 相关文章推荐
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
Feb 26 Javascript
css值转换成数值请抛弃parseInt
Oct 24 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
Dec 08 Javascript
用jquery的方法制作一个简单的导航栏
Jun 23 Javascript
BootStrap实现手机端轮播图左右滑动事件
Oct 13 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
Sep 29 Javascript
vue生成token保存在客户端localStorage中的方法
Oct 25 Javascript
JavaScript代码实现txt文件的上传预览功能
Mar 27 Javascript
微信小程序分享海报生成的实现方法
Dec 10 Javascript
js神秘的电报密码 哈弗曼编码实现
Sep 10 Javascript
VUE实现图片验证码功能
Nov 18 Javascript
vue打开子组件弹窗都刷新功能的实现
Sep 21 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网站判断用户是否是手机访问的方法
2013/11/01 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
vue项目实战总结篇
2018/02/11 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
python求最大值最小值方法总结
2019/06/25 Python
python修改字典键(key)的方法
2019/08/05 Python
python生成特定分布数的实例
2019/12/05 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
学前教育专业毕业生自荐信
2013/10/03 职场文书
机电一体化专业推荐信
2013/12/03 职场文书
525心理活动总结
2014/07/04 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
学校食堂管理制度
2015/08/04 职场文书
2019自荐信范文集锦!
2019/07/03 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python
Redis主从复制操作和配置详情
2022/09/23 Redis