(三)微信小程序首頁的分類功能和搜索功能的實現筆記


就在昨天,微信宣布了微信小程序開發者工具新增“雲開發”功能

下載最新的開發者工具,現在無需服務器即可實現小程序的快速迭代!

分類功能和搜索功能的效果圖

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) {
    /*console.log('搜索函數觸發')*/
    var that = this;
    var newsList = wx.getStorage({
      key: 'newsList',
      success: function (res) {//從storage中取出存儲的數據*/
      /*console.log(res)*/
        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);

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM