您好,登錄后才能下訂單哦!
就在昨天,微信宣布了微信小程序開發(fā)者工具新增“云開發(fā)”功能
下載最新的開發(fā)者工具,現(xiàn)在無(wú)需服務(wù)器即可實(shí)現(xiàn)小程序的快速迭代!
分類功能和搜素功能的效果圖
1.首頁(yè)分類功能的實(shí)現(xiàn)
boxtwo方法(.js文件)
boxtwo: function (e) { var index = parseInt(e.currentTarget.dataset.index) this.setData({ HomeIndex: index }) },
當(dāng)在首頁(yè)點(diǎn)擊 分類導(dǎo)航時(shí),會(huì)觸發(fā)這個(gè)方法,并傳回當(dāng)前點(diǎn)擊時(shí)的index值。
這個(gè)方法實(shí)現(xiàn)的是將.wxml文件傳來(lái)的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 }
這樣就實(shí)現(xiàn)了首頁(yè) 當(dāng)前點(diǎn)擊的分類 呈現(xiàn)出 被選中的樣式。
然后在視圖層根據(jù)HomeIndex的不同,加載對(duì)應(yīng)的數(shù)據(jù)。
<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>
組件實(shí)現(xiàn)的是點(diǎn)擊當(dāng)前文章時(shí)傳出id到詳情頁(yè)面(detail)。這樣就把首頁(yè)的文章列表和文章的詳情頁(yè)面一一對(duì)應(yīng)起來(lái)了。
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.搜索功能的實(shí)現(xiàn)
.wxml文件
<view class='search-view'> <input class='input' confirm-type="search" maxlength="30" bindinput='wxSearchInput' value='{{keyword}}' bindconfirm='wxSearchFn' bindfocus="wxSerchFocus" bindblur="wxSearchBlur" placeholder='請(qǐng)輸入搜索內(nèi)容'></input> <button class='search' bindtap="wxSearchFn" hover-class='button-hover'>搜索</button> </view>
JavaScript indexOf() 方法
indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。
key為搜索的關(guān)鍵字,res.data[i].title為首頁(yè)列表的標(biāo)題。使用indexOf()方法時(shí),當(dāng)滿足了(res.data[i].title.indexOf(key) >= 0)說(shuō)明說(shuō)明輸入的關(guān)鍵字在文章列表中
也有相同的關(guān)鍵字,然后arr.push(res.data[i]),這樣就把篩選出來(lái)的文章放在了臨時(shí)數(shù)組arr中了
//搜索方法 key為用戶輸入的查詢字段 search: function (key) { /*console.log('搜索函數(shù)觸發(fā)')*/ var that = this; var newsList = wx.getStorage({ key: 'newsList', success: function (res) {//從storage中取出存儲(chǔ)的數(shù)據(jù)*/ /*console.log(res)*/ if (key == '') {//用戶沒(méi)有輸入 全部顯示 that.setData({ newsList: res.data }) return; } var arr = [];//臨時(shí)數(shù)組 用于存放匹配到的數(shù)據(jù) 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//在頁(yè)面顯示找到的數(shù)據(jù) }) } } }) } //搜素時(shí)觸發(fā),調(diào)用search: function (key),傳入輸入的e.detail.value值 wxSearchInput: function (e) { this.search(e.detail.value); }
index.wxml(首頁(yè))完整代碼
<view class='search-view'> <input class='input' confirm-type="search" maxlength="30" bindinput='wxSearchInput' value='{{keyword}}' bindconfirm='wxSearchFn' bindfocus="wxSerchFocus" bindblur="wxSearchBlur" placeholder='請(qǐng)輸入搜索內(nèi)容'></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">首頁(yè)</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">網(wǎng)賺小項(xiàng)目</view> <view class="boxtwo-tab-nav {{HomeIndex == 4 ?'on':''}}" bindtap="boxtwo" data-index="4">共享經(jīng)濟(jì)</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(對(duì)應(yīng)的樣式文件)
.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) { /*console.log('搜索函數(shù)觸發(fā)')*/ var that = this; var newsList = wx.getStorage({ key: 'newsList', success: function (res) {//從storage中取出存儲(chǔ)的數(shù)據(jù)*/ /*console.log(res)*/ if (key == '') {//用戶沒(méi)有輸入 全部顯示 that.setData({ newsList: res.data }) return; } var arr = [];//臨時(shí)數(shù)組 用于存放匹配到的數(shù)據(jù) 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//在頁(yè)面顯示找到的數(shù)據(jù) }) } } }) }, //事件處理函數(shù) 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) { /*console.log(e)*/ }, boxtwo: function (e) { var index = parseInt(e.currentTarget.dataset.index) this.setData({ HomeIndex: index }) },
總結(jié)
以上所述是小編給大家介紹的微信小程序首頁(yè)的分類功能和搜索功能的實(shí)現(xiàn)思路及代碼詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。