需求
根據後臺傳入或者前端生成的數據,每行固定顯示N個,多出來的自動換行,在我的項目中需要的每行固定顯示爲2個。
Demo地址:git鏈接
如圖所示:
思路
以每行固定兩個,自動換行爲例子。
先判斷數據的條數,根據數據的條數去判斷有幾行,然後在行內展示兩條,根據第幾行,第幾條來取數據是第幾條。如果不能理解,請看代碼。或者GIT查看
頁面目錄
其中WXS(WeiXin Script)是小程序的一套腳本語言,結合 WXML,可以構建出頁面的結構。
index.wxs文件內容
/*index.wxs
*獲取行數,
*/
var filters = {
toFix: function (value) {
return parseInt(value); //此處爲獲取整數,不進行四捨五入操作
}
}
module.exports = {
toFix: filters.toFix,
}
index.js文件內容
/*index.js
*獲取數據
*/
Page({
data: {
listData:[
{ 'text': '09.30~10.06' },
{ 'text': '10.07~10.13' },
{ 'text': '10.14~10.20' },
{ 'text': '10.21~10.27' },
{ 'text': '10.28~11.03' }
]
},
onLoad: function () {
},
})
index.wxml文件內容
<!--獲取文件index.wxs文件的函數-->
<wxs module="filters" src="index.wxs"></wxs>
<!--判斷有幾行,根據行數目,第幾行index參數賦值在i變量上-->
<block wx:for="{{listData.length%2?filters.toFix(listData.length/2)+1:listData.length/2}}" wx:for-index="i" wx:for-key="{{i}}" wx:key="i">
<view class="demo-row">
<!--每行循序2次,index參數賦值在j變量上-->
<block wx:for="{{2}}" wx:for-index="j" wx:for-item="item_j" wx:for-key="key_j" wx:key="j">
<!--此時數據的條數爲i*2+j行數*2+第幾行-->
<block wx:if="{{listData[i*2+j].text}}">
<view class="demo-item">
<view class="screen-data" data-index="{{i*2+j}}">{{listData[i*2+j].text}}</view>
</view>
</block>
</block>
</view>
</block>
index.wxss文件內容
<!--獲取文件index.wxs文件的函數-->
.demo-row{
display: flex;
justify-content:flex-start;
}
.demo-item{
margin-top: 24rpx;
width: 50%;
}
.demo-item .screen-data{
margin: 12rpx;
padding: 12rpx;
text-align: center;
border:1px solid #ccc;
border-radius: 8rpx;
}