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


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进行跨域请求
Jan 25 Javascript
jQuery设置div一直在页面顶部显示的方法
Oct 24 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
Dec 31 Javascript
jquery解析xml字符串示例分享
Mar 25 Javascript
JavaScript使用cookie实现记住账号密码功能
Apr 27 Javascript
关于JS中的apply,call,bind的深入解析
Apr 05 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
JavaScript实现256色转灰度图
Feb 22 Javascript
JS实现运动缓冲效果的封装函数示例
Feb 18 Javascript
微信小程序数据分析之自定义分析的实现
Aug 17 Javascript
详解Vue中使用Axios拦截器
Apr 22 Javascript
JavaScript鼠标拖拽事件详解
Apr 03 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 获取本机外网/公网IP的代码
2010/05/09 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
Ext 今日学习总结
2010/09/19 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
2016/05/16 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
javascript实现下雨效果
2017/03/27 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
JS创建Tag标签的方法详解
2017/06/09 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
Python素数检测实例分析
2015/06/15 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
python list格式数据excel导出方法
2018/10/31 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
应届生求职信写作技巧
2013/10/24 职场文书
优秀中专生推荐信
2013/11/17 职场文书
培训主管岗位职责
2014/02/01 职场文书
项目建议书模板
2014/05/12 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
销售经理岗位职责
2015/01/31 职场文书
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript