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


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 相关文章推荐
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
Jun 27 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
Apr 15 Javascript
Knockout数组(observable)使用详解示例
Nov 15 Javascript
jQuery toggleClass应用实例(附效果图)
Apr 06 Javascript
node.js中的path.join方法使用说明
Dec 08 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
Mar 29 Javascript
JavaScript动态数量的文件上传控件
Nov 18 Javascript
jQuery实现鼠标滑过图片移动特效
Dec 08 Javascript
详解Angular 4.x NgTemplateOutlet
May 24 Javascript
微信小程序 五星评分的实现实例
Aug 04 Javascript
VUE 使用中踩过的坑
Feb 08 Javascript
JavaScript工具库之Lodash详解
Jun 15 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
VOLVO车载收音机
2021/03/02 无线电
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
Yii分页用法实例详解
2014/12/04 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
ASP SQL防注入的方法
2008/12/25 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
JS实现星星海特效
2019/12/24 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
为Python的web框架编写前端模版的教程
2015/04/30 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
python的常用模块之collections模块详解
2018/12/06 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
介绍一下linux的文件权限
2012/02/15 面试题
技术学校毕业生求职信分享
2013/12/02 职场文书
社区十八大感言
2014/01/19 职场文书
保险专业自荐信范文
2014/02/20 职场文书
运动会横幅标语
2014/06/17 职场文书
2015年党员承诺书
2015/01/21 职场文书
综治目标管理责任书
2015/05/11 职场文书