今天在项目碰到一个问题,之前在项目首页实现单列表的显示和隐藏,通过wx:if判断就可实现,现在要实现多列表的单项显示和隐藏功能应该如何实现呢?如果还用wx:if实现的话会出现点击一个列表项,多个列表同时显示和隐藏,明显不适合功能需求,然后简单地查了资料也没发现有类似的功能,最后思考一番后,慢慢地理清了思路...
效果图:
实现思路:
实现单个列表的显示和隐藏应该使用唯一元素让程序知道你应该显示和隐藏哪个列表项,可以用数据的id;
css中定义一个hidden{display:none}控制显示和隐藏,然后通过三元运算符来判断;
wxml定义一个点击事件来动态修改这个列表项的变量值。
功能实现:
好了,思路有了,就开始按照思路来用代码验证。果不其然,使用代码实现之后,发现自己的思路还是没错的。此功能点也可以应用到其它类似的列表的显示和隐藏中。
示例代码:
<!--pages/myOrder/myOrder.wxml--> <view> <!-- 订单列表 --> <block wx:for-items="{{carInfoData}}"> <view bindtap='toggleBtn'> <view> <image src='https://www.jb51.net/{{item.imgurl}}'></image> </view> <view> <view>日期: <text>{{item.useDate}}</text> </view> <view>车型: <text>{{item.cx}}</text> </view> <view>时长: <text>{{item.time}}</text> </view> <view>费用: <text>{{item.feiyong}}</text> </view> </view> <view> <view>启用时间:2018.01.01 11:33</view> <view>结束时间:2018.01.01 11:33</view> <view>租赁地区:舟山市桃花岛景区海湾浪琴</view> <view>意见反馈</view> </view> </view> </block> </view> // pages/myOrder/myOrder.js Page({ /** * 页面的初始数据 */ data: { uhide: 0 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var that = this; var data = { "datas": [ { "id": 1, "imgurl": "../../images/car.png", "useDate": "2017-12-22", "cx": "奇瑞EQ1", "time": "1小时", "feiyong": "20元" }, { "id": 2, "imgurl": "../../images/car.png", "useDate": "2017-12-22", "cx": "奇瑞EQ1", "time": "1小时", "feiyong": "20元" }, { "id": 3, "imgurl": "../../images/car.png", "useDate": "2017-12-22", "cx": "奇瑞EQ1", "time": "1小时", "feiyong": "20元" }, { "id": 4, "imgurl": "../../images/car.png", "useDate": "2017-12-22", "cx": "奇瑞EQ1", "time": "1小时", "feiyong": "20元" } ] }; //console.log(data.datas); //设置车辆展示信息 that.setData({ carInfoData: data.datas }) }, //点击切换隐藏和显示 toggleBtn: function (event) { var that = this; var toggleBtnVal = that.data.uhide; var itemId = event.currentTarget.id; if (toggleBtnVal == itemId) { that.setData({ uhide: 0 }) } else { that.setData({ uhide: itemId }) } } })
GitHub源码地址:小程序显示和隐藏
总结
以上所述是小编给大家介绍的微信小程序之多列表的显示和隐藏功能【附源码】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章: