时间:2021-05-18
就在昨天,微信宣布了微信小程序开发者工具新增“云开发”功能
下载最新的开发者工具,现在无需服务器即可实现小程序的快速迭代!
分类功能和搜素功能的效果图
1.首页分类功能的实现
boxtwo方法(.js文件)
boxtwo: function (e) { var index = parseInt(e.currentTarget.dataset.index) this.setData({ HomeIndex: index }) },当在首页点击 分类导航时,会触发这个方法,并传回当前点击时的index值。
这个方法实现的是将.wxml文件传来的index值赋给HomeIndex。
class="boxtwo-tab-nav {{HomeIndex == 0 ?'on':''}}"
.wxss样式文件
.boxtwo-tab-nav{display: inline-block;width: 20%;height: 90rpx;line-height: 90rpx;border-bottom: 1rpx solid #ededed;box-sizing: border-box;text-align: center;color: black;font-size: 30rpx}这样就实现了首页 当前点击的分类 呈现出 被选中的样式。
然后在视图层根据HomeIndex的不同,加载对应的数据。
<view wx:if="{{HomeIndex == 1}}" > <block wx:for="{{shareList}}" wx:key="*this"> <navigator url='../../pages/shareDetail/shareDetail?id={{item.id}}' hover-class="navigator-hover"> <view class='imgs'> <image src="{{item.img}}" background-size="cover" mode="scaleToFill"></image> </view> <view class='infos'> <view class="title">{{item.title}}</view> <view class="date">{{item.cTime}}</view> </view> </navigator></block> </view><navigator></navigator>组件实现的是点击当前文章时传出id到详情页面(detail)。这样就把首页的文章列表和文章的详情页面一一对应起来了。
detail.js文件
onLoad: function (options) { var that = this wx.request({ url: 'http://localhost:81/weicms/index.php?s=/addon/School/School/getDetail', data: {id:options.id}, header: { 'content-type': 'application/json' }, success: function (res) { wx.setStorage({ key: 'info', data: res.data, }) that.setData({ info: res.data }) } }) }2.搜索功能的实现
.wxml文件
<view class='search-view'> <input class='input' confirm-type="search" maxlength="30" bindinput='wxSearchInput' value='{{keyword}}' bindconfirm='wxSearchFn' bindfocus="wxSerchFocus" bindblur="wxSearchBlur" placeholder='请输入搜索内容'></input> <button class='search' bindtap="wxSearchFn" hover-class='button-hover'>搜索</button></view>JavaScript indexOf() 方法
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
key为搜索的关键字,res.data[i].title为首页列表的标题。使用indexOf()方法时,当满足了(res.data[i].title.indexOf(key) >= 0)说明说明输入的关键字在文章列表中
也有相同的关键字,然后arr.push(res.data[i]),这样就把筛选出来的文章放在了临时数组arr中了
//搜索方法 key为用户输入的查询字段 search: function (key) { var that = this; var newsList = wx.getStorage({ key: 'newsList', success: function (res) {//从storage中取出存储的数据*/ if (key == '') {//用户没有输入 全部显示 that.setData({ newsList: res.data }) return; } var arr = [];//临时数组 用于存放匹配到的数据 for (let i in res.data) { if (res.data[i].title.indexOf(key) >= 0) {//查找 arr.push(res.data[i]) } } if (arr.length == 0) { that.setData({ newsList:[] }) } else { that.setData({ newsList: arr//在页面显示找到的数据 }) } } }) }//搜素时触发,调用search: function (key),传入输入的e.detail.value值wxSearchInput: function (e) { this.search(e.detail.value);}index.wxml(首页)完整代码
<view class='search-view'> <input class='input' confirm-type="search" maxlength="30" bindinput='wxSearchInput' value='{{keyword}}' bindconfirm='wxSearchFn' bindfocus="wxSerchFocus" bindblur="wxSearchBlur" placeholder='请输入搜索内容'></input> <button class='search' bindtap="wxSearchFn" hover-class='button-hover'>搜索</button></view><view class="boxtwo-tab-nav {{HomeIndex == 0 ?'on':''}}" bindtap="boxtwo" data-index="0">首页</view> <view class="boxtwo-tab-nav {{HomeIndex == 1 ?'on':''}}" bindtap="boxtwo" data-index="1">资源分享</view> <view class="boxtwo-tab-nav {{HomeIndex == 2 ?'on':''}}" bindtap="boxtwo" data-index="2">微信小程序</view> <view class="boxtwo-tab-nav {{HomeIndex == 3 ?'on':''}}" bindtap="boxtwo" data-index="3">网赚小项目</view><view class="boxtwo-tab-nav {{HomeIndex == 4 ?'on':''}}" bindtap="boxtwo" data-index="4">共享经济</view><view class="wrap"> <template name="lists"> <navigator url='../../pages/detail/detail?id={{id}}' hover-class="navigator-hover"> <view class='imgs'> <image src="{{img}}" background-size="cover" mode="scaleToFill"></image> </view> <view class='infos'> <view class="title">{{title}}</view> <view class="date">{{cTime}}</view> </view> </navigator> </template></view><view wx:if="{{HomeIndex == 0}}"><block wx:for="{{newsList}}" wx:key="*this"> <template is="lists" data="{{...item}}"/></block></view> <view wx:if="{{HomeIndex == 1}}" > <block wx:for="{{shareList}}" wx:key="*this"> <navigator url='../../pages/shareDetail/shareDetail?id={{item.id}}' hover-class="navigator-hover"> <view class='imgs'> <image src="{{item.img}}" background-size="cover" mode="scaleToFill"></image> </view> <view class='infos'> <view class="title">{{item.title}}</view> <view class="date">{{item.cTime}}</view> </view> </navigator></block> </view> <view wx:if="{{HomeIndex == 2}}" > <block wx:for="{{weixinList}}" wx:key="*this"> <navigator url='../../pages/weixinDetail/weixinDetail?id={{item.id}}' hover-class="navigator-hover"> <view class='imgs'> <image src="{{item.img}}" background-size="cover" mode="scaleToFill"></image> </view> <view class='infos'> <view class="title">{{item.title}}</view> <view class="date">{{item.cTime}}</view> </view> </navigator> </block> </view> <view wx:if="{{HomeIndex == 3}}" > <block wx:for="{{netearnList}}" wx:key="*this"> <navigator url='../../pages/netearnDetail/netearnDetail?id={{item.id}}' hover-class="navigator-hover"> <view class='imgs'> <image src="{{item.img}}" background-size="cover" mode="scaleToFill"></image> </view> <view class='infos'> <view class="title">{{item.title}}</view> <view class="date">{{item.cTime}}</view> </view> </navigator> </block> </view> <view wx:if="{{HomeIndex == 4}}" > <block wx:for="{{economyList}}" wx:key="*this"> <navigator url='../../pages/economyDetail/economyDetail?id={{item.id}}' hover-class="navigator-hover"> <view class='imgs'> <image src="{{item.img}}" background-size="cover" mode="scaleToFill"></image> </view> <view class='infos'> <view class="title">{{item.title}}</view> <view class="date">{{item.cTime}}</view> </view> </navigator> </block> </view>index.wxss(对应的样式文件)
.wrap{ height: 100%; display:flex; flex-direction: column; padding: 20rpx}navigator{overflow: hidden}.list{ margin-bottom: 20rpx; height: 200rpx; position: relative;}.imgs{ float: left;}.imgs image{ display: block; width: 210rpx; height: 180rpx;}.boxtwo-tab-nav{ display: inline-block; width: 20%; height: 90rpx; line-height: 90rpx; border-bottom: 1rpx solid #ededed; box-sizing: border-box; text-align: center; color: black; font-size: 30rpx}.on{ color:#405F80; border-bottom: 5rpx solid #405F80;}.infos{ float: left; width: 480rpx; height: 200rpx; padding: 20rpx 0 0 20rpx;}.date{ font-size:13px;color:#aaa;position: absolute;}.title{font-size: 15px;}.search{ float: left; width: 130rpx; height: 70rpx; margin-left: 0; background-color: blueviolet; font-size: 28rpx; color: #fff; border: none;}.input{ float: left; width: 500rpx; height: 70rpx; font-size: 35rpx; background-color: white;}.search-view{ position: relative; overflow: hidden; height: 70rpx; padding: 20rpx 20rpx 25rpx 60rpx; background-color: #6699FF;}.button-hover { background-color: red;}.js文件(逻辑层)
Page({ data:{ newsList:[], HomeIndex: 0 }, onLoad: function () { var that = this; wx.request({ url: 'http://localhost:81/weicms/index.php?s=/addon/School/School/getList', data: {}, header: { 'content-type': 'application/json' }, success: function (res) { console.log(res.data) wx.setStorage({ key: 'newsList', data: res.data, }) that.setData({ newsList: res.data }) } }) wx.request({ url: 'http://localhost:81/weicms/index.php?s=/addon/Share/Share/getList', data: {}, header: { 'content-type': 'application/json' }, success: function (res) { wx.setStorage({ key: 'sharesList', data: res.data, }) that.setData({ shareList: res.data }) } }) wx.request({ url: 'http://localhost:81/weicms/index.php?s=/addon/Weixin/Weixin/getList', data: {}, header: { 'content-type': 'application/json' }, success: function (res) { wx.setStorage({ key: 'weixinList', data: res.data, }) that.setData({ weixinList: res.data }) } }) wx.request({ url: 'http://localhost:81/weicms/index.php?s=/addon/Netearn/Netearn/getList', data: {}, header: { 'content-type': 'application/json' }, success: function (res) { wx.setStorage({ key: 'netearnList', data: res.data, }) that.setData({ netearnList: res.data }) } }) wx.request({ url: 'http://localhost:81/weicms/index.php?s=/addon/Economy/Economy/getList', data: {}, header: { 'content-type': 'application/json' }, success: function (res) { wx.setStorage({ key: 'economyList', data: res.data, }) that.setData({ economyList: res.data }) } }) }, //搜索方法 key为用户输入的查询字段 search: function (key) { var that = this; var newsList = wx.getStorage({ key: 'newsList', success: function (res) {//从storage中取出存储的数据*/ if (key == '') {//用户没有输入 全部显示 that.setData({ newsList: res.data }) return; } var arr = [];//临时数组 用于存放匹配到的数据 for (let i in res.data) { if (res.data[i].title.indexOf(key) >= 0) {//查找 arr.push(res.data[i]) } } if (arr.length == 0) { that.setData({ newsList:[] }) } else { that.setData({ newsList: arr//在页面显示找到的数据 }) } } }) }, //事件处理函数 bindViewTap: function() { wx.navigateTo({ url: '../logs/logs' }) }, wxSearchInput: function (e) { this.search(e.detail.value); console.log(e.detail.value) }, wxSerchFocus: function (e) { this.search(e.detail.value); }, wxSearchBlur: function (e) { this.search(e.detail.value); }, wxSearchFn: function (e) { }, boxtwo: function (e) { var index = parseInt(e.currentTarget.dataset.index) this.setData({ HomeIndex: index }) },总结
以上所述是小编给大家介绍的微信小程序首页的分类功能和搜索功能的实现思路及代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了微信小程序外卖选购页实现切换分类与数量加减功能。分享给大家供大家参考,具体如下:关于微信小程序外卖界面实现选购切换分类与数量加减功能开发步骤:效果
微信小程序支付功能实现PHP实例详解前端代码:wx.request({url:'https:///wxpay/pay.php',//通知地址'openid'=>
微信小程序上传头像的实例详解最近在做微信小程序上传头像和上传照片功能就随手写一下代码:上传头像html: 头像 js代码://切换头像cha
微信小程序支付功能(前端)的实现只提供微信小程序端代码:varapp=getApp();Page({data:{},onLoad:function(option
昨天晚些时候微信团队发布了微信小程序开发者工具、微信小程序开发文档和微信小程序设计指南,全新的开发者工具,集成了开发调试、代码编辑及程序发布等功能,帮助开发者