§ 檢視與資料關聯
本文配套視訊地址: v.qq.com/x/page/z055…
開始前請把
ch3-3
分支中的code/
目錄匯入微信開發工具
首先
首先我們要做的是什麼呢?直接寫模板邏輯嗎?不是,給使用者以良好的提示是很重要的,所以,我們要做的第一件事就是,載入中...
這裡我們採用官方 loading
元件,所以現在就可以直接拿來用了。
修改 index.wxml
,增加 loading
元件。很明顯,變數 hiddenLoading
控制著它的展示與隱藏:
<loading hidden="{{hiddenLoading}}">資料載入中</loading>
複製程式碼
然後修改 index.js,處理 loading 元件的狀態邏輯值 hiddenLoading
// 剛進入列表頁面,就展示loading元件,資料載入完成後隱藏
onLoad (options) {
this.setData({
hiddenLoading: false
})
this.requestArticle()
},
// 列表渲染完成後,隱藏 loading元件
renderArticle (data) {
if (data && data.length) {
let newList = this.data.articleList.concat(data);
this.setData({
articleList: newList,
hiddenLoading: true
})
}
}
複製程式碼
分析頁面結構
通過分析靜態頁面可以看出,這個列表是按照 天 為單位來分段,在每天的文章裡又按照 文章 為單位繼續細分。所以可以知道這個 wxml
的主體結構是迴圈套迴圈。所以我們可以初步寫出下面的結構:
<loading hidden="{{hiddenLoading}}">資料載入中</loading>
<view class="wrapper">
<view wx:for="{{ articleList }}" wx:for-item="group" wx:key="{{ group.date }}" class="group">
<view wx:for="{{ group }}" wx:for-item="item" wx:key="{{ item.contentId }}"></view>
</view>
</view>
複製程式碼
這裡有一點需要 注意:在 wxml
做迴圈巢狀的時候,一定要重新定義 wx:for-item
欄位。因為 wxml
迴圈中當前項的下標變數名預設為 index
,當前項的變數名預設為 item
。如果沒有重新定義 item
,在內層迴圈裡通過 item
取到的值其實是外層迴圈的值。
下面我們就詳細的分析下具體的結構,首先,每一天都有一個日期做開頭,然後下面是一天的 4 篇文章。每篇文章分為左右結構,左邊是標題,最多 3 行,超過的文字就用 … 表示。右邊是一張文章的封面圖,如果沒有封面圖就用預設的封面圖。上面的日期如果是今天就顯示今天,否則就直接顯示月日,所以可以把 wxml
結構豐富成下面的樣子:
<loading hidden="{{hiddenLoading}}">資料載入中</loading>
<view class="wrapper">
<!--repeat-->
<view wx:for="{{ articleList }}" wx:for-item="group" wx:key="{{ group.date }}" class="group">
<view class="group-bar">
<view class="group-title {{ group.formateDate === '今日' ? 'on' : ''}}">{{ group.formateDate }}</view>
</view>
<view class="group-content">
<!--repeat-->
<view wx:for="{{ group.articles }}" wx:for-item="item" wx:key="{{ item.contentId }}" data-item="{{ item }}" class="group-content-item">
<view class="group-content-item-desc ellipsis-multi-line ellipsis-line-3">{{ item.title }}</view>
<image mode="aspectFill" class="group-content-item-img" src="{{ item.cover || defaultImg.coverImg }}" ></image>
</view>
</view>
</view>
</view>
複製程式碼
這裡有一個圖片處理的屬性可以看看相應的 API 瞭解下:
頁面結構搭建完了嗎?並沒有,還有一件很重要的事情要做。當我們的所有內容都展示完了,我們要友好的提醒使用者,所以需要在最底端加上一個提示,把這些互動考慮進去之後的 wxml
就是下面這樣的:
<!--index.wxml-->
<loading hidden="{{hiddenLoading}}">資料載入中</loading>
<view class="wrapper">
<!--repeat-->
<view wx:for="{{ articleList }}" wx:for-item="group" wx:key="{{ group.date }}" class="group">
<view class="group-bar">
<view class="group-title {{ group.formateDate === '今日' ? 'on' : ''}}">{{ group.formateDate }}</view>
</view>
<view class="group-content">
<!--repeat-->
<view wx:for="{{ group.articles }}" wx:for-item="item" wx:key="{{ item.contentId }}" data-item="{{ item }}" class="group-content-item">
<view class="group-content-item-desc ellipsis-multi-line ellipsis-line-3">{{ item.title }}</view>
<image mode="aspectFill" class="group-content-item-img" src="{{ item.cover || defaultImg.coverImg }}" ></image>
</view>
</view>
</view>
<view hidden="{{ hasMore }}" class="no-more">暫時沒有更多內容</view>
</view>
複製程式碼
到此,列表的頁面與大體資料可以說是告一段落了,下一節我們介紹下如何增加閱讀標識功能及分享功能、下拉更新功能
iKcamp官網:www.ikcamp.com
訪問官網更快閱讀全部免費分享課程:《iKcamp出品|全網最新|微信小程式|基於最新版1.0開發者工具之初中級培訓教程分享》。 包含:文章、視訊、原始碼
iKcamp原創新書《移動Web前端高效開發實戰》已在亞馬遜、京東、噹噹開售。
iKcamp最新活動
與
“天天練口語”
小程式總榜排名第四、教育類排名第一的研發團隊,面對面溝通交流。
2019年,iKcamp原創新書《Koa與Node.js開發實戰》已在京東、天貓、亞馬遜、噹噹開售啦!