小程序學習(8)——電影更多頁的設計與製作

一、更多頁面的製作

1、區分獲取不同類目

有了上一個主頁面的基礎,肯定我們是知道了我們需要什麼東西,在這個時候我們最需要的東西是一個跳轉的點擊事件catchTap和相關API的調用,來做頁面顯示。

在我們listTamplate中對更多添加了點擊事件之後,我們會發現模板文件好像並沒有一個地方讓我們書寫點擊事件。我是放在了movies.js下邊,即首頁面下,其實有興趣可以嘗試一下是不是哪個頁面也可以的。

接下來要解決的問題是區分三個“更多”的不同,來展示不同的內容,這個我前期構想,區分是不是我在模板的時候進行區分呢?但是模板又是在more-movie中被引用,從而獲取API數據,所以,最後決定從more-movie中下手,從獲取的時候就識別。

第一步,點擊事件
在這裏插入圖片描述
第二個data-category的內容可以參考文章詳情頁的內容,有說明

https://blog.csdn.net/shenyou_fu/article/details/103645246

第二步,寫點擊事件
在這裏插入圖片描述
URL使用?的作用應該不用說明吧,使用category來獲取我們點擊所獲取到的內容。留意我畫出來的地方。
第三步,獲取我們的內容
在這裏插入圖片描述
在這裏插入圖片描述

2、動態導航欄

在小程序中內置了動態標題組件,路徑爲“API——界面——導航欄—— wx.setNavigationBarTitle(Object object)
動態設置當前頁面的標題”

設置的時候不要放在初次加載onLoad中。否則在初次加載的時候會被過濾到(個人理解)。所以放在初次渲染後的函數中。

3、引用API

整體和之前的引用API時已基本一致的。只是用switch區分了一下三個不同的類目
在這裏插入圖片描述
之後將方法提取了寫在了一個公共類。
在這裏插入圖片描述
用回調函數來返回數據,否則是獲取不到數據的,記得在應用的地方引用公共文檔。
在這裏插入圖片描述
大體和上一個引用API是一模一樣的,就是回調函數和數據綁定有了一些小的修改,不再使用動態綁定,但是movies仍要在data中定義全局變量,否則會出錯的。

註釋

1、在寫API的時候注意空格,微信對空格的處理並不是很親民
2、主要前後返回數據的對應,否則也會引起錯誤信息

4、更多頁面的模板設計

我們其實不用那麼多,前邊已經做了很多頁面了,所以我們很多東西直接引用就可以,更多的頁面也是將電影的單個個體組成的,所以我們引用模板movie-template,然後將內容在more-movie中在添加內容,並給他賦值,基礎頁面就出來了,所以還是很快速的。
在這裏插入圖片描述

然後在稍微調一下樣式,浮動讓他排列起來
在這裏插入圖片描述
就大功告成了。
在這裏插入圖片描述

二、上滑加載更多的實現

在小程序中,內置了底部刷新組件,即可滾動視圖區域scroll-view,也是一個容器組件。
這個組件是需要在設置時給他組件的高度的,否則是無法加載的,所以在樣式中需要給他一個高度
在這裏插入圖片描述
在這裏插入圖片描述
在事件中獲取在加20的加載值
在這裏插入圖片描述
this.data.totalCount是用來獲取+20後數據的值,即totalCount加20,this.data.requestUrl是用來獲取當前API的數據值。但是這樣獲取後,還是每次只顯示20條數據,只會對當前頁面進行刷新。

所以我們這個時候還要對他進行修改,讓他獲取到信息,而不是單純的刷新。
採用分佈式加載
因爲我們是在數據綁定時進行的數據刷新,所以我們要在數據刷新時可以判斷當前是否是第一次加載,如果是第一次加載,那麼我們讓數據只加前20,如果不是第一次加載,那麼就讓當前內容加上刷新加載出來的新內容。
所以定義了isEmpty來判斷狀態。
在這裏插入圖片描述
定義數組totalMovies來存放新的數組信息,如果當前不是第一次加載,那麼獲取到新紀錄加上老記錄

totalMovies=this.data.movies.concat(movies);

否則就將當前第一次加載出來的數據給他,並且改變狀態isEmpty。
就可以了,

最重要的一點是,因爲當前獲取數組已經改變,不再是movies,而是totalMovies,所以一定記得修改數據綁定this.setData的內容,否則是不會改變的。

2、爲加載更多信息添加加載動畫

在小程序中,這些東西是內置好的動畫,在“API——導航欄中”

wx.showNavigationBarLoading(Object object)     開始
wx.hideNavigationBarLoading(Object object)     結束

截圖就算了,,實在是本地加載速度太快了,根本截不上。
開始放在方法被引用的時候,結束放在被調用加載之後。

3、實現下拉刷新

loading是一個動態,有開始有結束,下拉刷新是一個狀態,所以在.json中定義。
在這裏插入圖片描述
圈起來的部分。
之後我們判斷事件。來判斷我們刷新後獲取數據,並且保證事件的正確性。

//下滑刷新的事件
  onPullDownRefresh:function(event){
    var refreshUrl=this.data.requesUrl+"?star=0&count=21";
    //避免在調用http時間函數後,狀態改變,導致無用數據加載,在這裏刷新後保持記錄
    this.data.movies={};
    this.data.isEmpty=true;
    //調用API的判斷方法,使用回調函數來展示判斷
    util.http(refreshUrl,this.callBack);
    wx.showNavigationBarLoading();
  }

再添加了刷新樣式的時候,記得在結束的時候,加結束wx.stopPullDownRefresh();
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章