小程序首页获取数据给数组赋值,实现加载更多,以及遇到的坑

 
<!-- wxml-->

<view>
  <view class="refreshTip" wx:if="{{refreshCompeleted==true}}">刷新成功</view>
  <news-list-item wx:for="{{newsList}}" news="{{item}}" wx:key="item.id"></news-list-item>
  <view class="weui-loadmore" wx:if="{{loading===true}}">
    <view class="weui-loading"></view>
    <view class="weui-loadmore__tips">加载中</view>
  </view>
  <view class="weui-loadmore" wx:if="{{loadingCompeleted===true}}">
    <view class="weui-loadmore__tips">加载完成</view>
  </view>
  <view class="weui-loadmore weui-loadmore_line" wx:if="{{noData===true}}">
    <view class="weui-loadmore__tips weui-loadmore__tips_in-line">暂无数据</view>
  </view>
</view>

不能直接把后台返回的数组数据赋值到定义的空数组中,一定要concat连接,否则结果是看似是个数组,但是获取到的该数组却为空,导致第一次上拉加载更多的时候是拿到的之前的数组依然是空数组。

 

var config = require ( '../../config' )
var util = require ( '../../utils/util.js' )

Component ({
properties : {
category : {
type : String ,
value : "index"
},
params : {
type : String ,
value : ""
},
},
data : {
newsList : [],
page : 0 ,
size : 10 ,
totalPages : 0 ,
refreshCompeleted : false ,
loadingCompeleted : false ,
loading : false ,
noData : false
},
methods : {
getList () {
let that = this ;
that .setData ({
page : 0
})
if (that .data .category === "index" ) {
util .get ( `${config .service .host }/web/news/list_with_pub_info?channelId=${config .channelId }&page=0&size=${that .data .size }` , function (res ) {
res .data .content .filter ((value ) => {
return value .createAt = util .formatTimeDistance ( new Date (value .createAt ))
})
let newsList = that .data .newsList .concat (res .data .content ); //这里要特别注意,不能直接that.setData({newsList:res.data.content}) ,见下面注释
that .setData ({
newsList : newsList ,
totalPages : res .data .totalPages ,
})
if (res .data .content .length = 0 ) {
that .setData ({
noData : true
})
}
if (res .data .content .length !== 0 && that .data .page + 1 == that .data .totalPages ) {
that .setData ({
loadingCompeleted : true ,
loading : false ,
noData : false
})
}
setTimeout ( function () {
that .setData ({
refreshCompeleted : true
})
}, 1000 )
setTimeout ( function () {
that .setData ({
refreshCompeleted : false
})
}, 2000 )
}, function (e ) {
console .log (JSON .stringify (e ));
});
} else if (that .data .category === "search" ) {
util .get ( `${config .service .host }/web/news/search_in_channel_with_pub_info?channelId=${config .channelId }&page=${that .data .page }&size=${that .data .size }&q=${that .data .params }` , function (res ) {
res .data .content .filter ((value ) => {
value .createAt = util .formatTimeDistance ( new Date (value .createAt ));
let keyword = that .data .params ;
let re = new RegExp (keyword , "g" );
value .title = value .title .replace (re , `<span class="keyword">${keyword }</span>` );
return value
})
let newsList = that .data .newsList .concat (res .data .content );
that .setData ({
newsList : newsList ,
totalPages : res .data .totalPages ,
})
console .log (res .data .content .length )
if (res .data .content .length === 0 ) {
that .setData ({
noData : true
})
}
if (res .data .content .length !== 0 && that .data .page + 1 == that .data .totalPages ) {
that .setData ({
loadingCompeleted : true ,
loading : false ,
noData : false
})
}
setTimeout ( function () {
that .setData ({
refreshCompeleted : true
})
}, 1000 )
setTimeout ( function () {
that .setData ({
refreshCompeleted : false
})
}, 2000 )
}, function (e ) {
console .log (JSON .stringify (e ));
});
} else if (that .data .category === "professor" ) {
util .get ( `${config .service .host }/web/news/list_by_follow_with_pub_info?pubId=${that .data .params }&page=${that .data .page }&size=${that .data .size }&q=${that .data .params }` , function (res ) {
res .data .content .filter ((value ) => {
return value .createAt = util .formatTimeDistance ( new Date (value .createAt ))
})
let newsList = that .data .newsList .concat (res .data .content );
that .setData ({
newsList : newsList ,
totalPages : res .data .totalPages ,
})
if (res .data .content .length === 0 ) {
that .setData ({
noData : true
})
}
if (res .data .content .length !== 0 && that .data .page + 1 == that .data .totalPages ) {
that .setData ({
loadingCompeleted : true ,
loading : false ,
noData : false
})
}
setTimeout ( function () {
that .setData ({
refreshCompeleted : true
})
}, 1000 )
setTimeout ( function () {
that .setData ({
refreshCompeleted : false
})
}, 2000 )
}, function (e ) {
console .log (JSON .stringify (e ));
});
}

},
getMoreList : function () {
let that = this ;
setTimeout ( function () {
if (that .data .page + 1 < that .data .totalPages ) {
that .setData ({
page : that .data .page + 1 ,
loading : true
})
if (that .data .category === "index" ) {
util .get ( `${config .service .host }/web/news/list_with_pub_info?channelId=${config .channelId }&page=${that .data .page }&size=${that .data .size }` , function (res ) {
res .data .content .filter ((value ) => {
return value .createAt = util .formatTimeDistance ( new Date (value .createAt ))
})
that .setData ({
newsList : that .data .newsList .concat (res .data .content ),
totalPages : res .data .totalPages ,
loading : false
})
}, function (e ) {
console .log (JSON .stringify (e ));
});
} else if (that .data .category === "search" ) {
util .get ( `${config .service .host }/web/news/search_in_channel_with_pub_info?channelId=${config .channelId }&page=${that .data .page }&size=${that .data .size }&q=${that .data .params }` , function (res ) {
res .data .content .filter ((value ) => {
value .createAt = util .formatTimeDistance ( new Date (value .createAt ));
let keyword = that .data .params ;
let re = new RegExp (keyword , "g" );
value .title = value .title .replace (re , `<text class="keyword">${keyword }</text>` );
return value
})
that .setData ({
newsList : that .data .newsList .concat (res .data .content ),
totalPages : res .data .totalPages ,
loading : false
})
}, function (e ) {
console .log (JSON .stringify (e ));
});
} else if (that .data .category === "professor" ) {
util .get ( `${config .service .host }/web/news/list_by_follow_with_pub_info?pubId=${that .data .params }&page=${that .data .page }&size=${that .data .size }&q=${that .data .params }` , function (res ) {
res .data .content .filter ((value ) => {
return value .createAt = util .formatTimeDistance ( new Date (value .createAt ))
})
that .setData ({
newsList : that .data .newsList .concat (res .data .content ),
totalPages : res .data .totalPages ,
loading : false
})
}, function (e ) {
console .log (JSON .stringify (e ));
});
}

} else {
that .setData ({
loading : false ,
loadingCompeleted : true
})
}
}, 500 )
},
},
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值