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


 
<!-- 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 )
},
},
})


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM