微信小程序新闻信息列表展示

刺骨的言语ヽ痛彻心扉 2021-09-17 11:36 721阅读 0赞

小程序

微信小程序信息展示列表

效果展示

wxml

  1. <!-- 轮播图 -->
  2. <view class='haibao' bindtap="seeDetail" id="{
  3. {item.activityContentId}}" >
  4. <swiper indicator-dots='{
  5. {indicatorDots}}' autoplay='{
  6. {autoplay}}' interval='{
  7. {interval}}' duration='{
  8. {duration}}' circular='true' indicator-dots='true' circular='{
  9. {circular}}' >
  10. <block wx:for="{
  11. {carousels}}">
  12. <swiper-item>
  13. <image src='{
  14. {baseUrl}}{
  15. {item.imgUrl}}' class='slide-image' binderror="errorFunction"></image>
  16. <text class="item-title">{
  17. {item.title}}</text>
  18. </swiper-item>
  19. </block>
  20. </swiper>
  21. </view>
  22. <!-- 图标 -->
  23. <!-- <view class="nav">
  24. <view bindtap='classify'>
  25. <view>
  26. <image src="/images/icon/renwu.jpg" style="width:80rpx;height:80rpx;"></image>
  27. </view>
  28. <view>艺人菜谱</view>
  29. </view>
  30. <view bindtap='movies'>
  31. <view>
  32. <image src="/images/icon/zhibo.jpg" style="width:80rpx;height:80rpx;"></image>
  33. </view>
  34. <view>电影推荐</view>
  35. </view>
  36. <view bindtap='post'>
  37. <view>
  38. <image src="/images/icon/chengshi.jpg" style="width:80rpx;height:80rpx;"></image>
  39. </view>
  40. <view>阅读文章</view>
  41. </view>
  42. </view> -->
  43. <!-- 数据列表 -->
  44. <view wx:for="{
  45. {dataList}}" class="item" bindtap="seeDetail" id="{
  46. {item.activityContentId}}">
  47. <!-- 线条 -->
  48. <view class="line"></view>
  49. <view class="title">{
  50. {item.activityTitle}}</view>
  51. <view class='pic'>
  52. <image src="{
  53. {baseUrl}}{
  54. {item.activitySmimg}}" style="width:100%;height:203px;"></image>
  55. </view>
  56. <view class="info">
  57. <view class="desc">
  58. <text>{
  59. {item.activityType}}</text>
  60. <text>{
  61. {item.activityLocation}}</text>
  62. <!-- <text>{
  63. {item.createDate}}</text> -->
  64. <text>{
  65. {util.sub(item.activityTime)}}</text>
  66. </view>
  67. </view>
  68. </view>
  69. <!-- 加载标志 -->
  70. <view class="load_more" hidden="{
  71. {!loading}}">
  72. <view class="load_loading"></view>
  73. <view class="load-tips">正在加载……</view>
  74. </view>
  75. <wxs module="util">
  76. var sub = function(val) {
  77. return val.substring(0, 10)
  78. }
  79. module.exports.sub = sub;
  80. </wxs>

wxss

  1. /**index.wxss**/
  2. .item-title {
  3. margin-bottom: 16rpx;
  4. font-size: 24rpx;
  5. }
  6. /* 图标 */
  7. .nav{
  8. display: flex;
  9. flex-direction: row;
  10. padding:10px;
  11. }
  12. .nav view{
  13. margin:0 auto;
  14. text-align: center;
  15. font-size: 13px;
  16. }
  17. /* 轮播图 */
  18. .haibao swiper {
  19. height: 150px;
  20. }
  21. /* 图片 */
  22. .slide-image {
  23. width: 100%;
  24. height: 150px;
  25. }
  26. /* 卡片 */
  27. .item {
  28. margin-top: 15px;
  29. margin-bottom: 10px;
  30. }
  31. /* 标题 */
  32. .title {
  33. margin-top: 8px;
  34. margin-left: 10px;
  35. margin-bottom: 8px;
  36. color: #444;
  37. font-weight: bold;
  38. font-size: 18px;
  39. }
  40. /* 信息 */
  41. .info {
  42. display: flex;
  43. flex-direction: row;
  44. font-size: 12px;
  45. color: #999;
  46. }
  47. /* 前半部分 */
  48. .desc {
  49. width: 95%;
  50. margin-left: 10px;
  51. }
  52. /* 每条信息 */
  53. .desc text {
  54. margin-right: 10px;
  55. }
  56. /* 后半部分 */
  57. .opr {
  58. width: 6%;
  59. }
  60. /* 打叉 */
  61. .opr view {
  62. width: 15px;
  63. height: 13px;
  64. border: 1px solid #ccc;
  65. line-height: 10px;
  66. text-align: center;
  67. border-radius: 5px;
  68. }
  69. /* 框架 */
  70. .load_more {
  71. margin: 20rpx auto;
  72. font-size: 14px;
  73. text-align: center;
  74. display: flex;
  75. flex-direction: row;
  76. justify-content: center;
  77. }
  78. /* 标志 */
  79. .load_loading {
  80. margin: 0 5px;
  81. width: 40rpx;
  82. height: 40rpx;
  83. /* display: inline-block;
  84. vertical-align: middle; */
  85. animation: weuiLoading 5s steps(12, end) infinite;
  86. background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;
  87. background-size: 100%;
  88. }
  89. /* 文字 */
  90. .load_tips {
  91. display: inline-block;
  92. vertical-align: middle;
  93. }
  94. .linecenter {
  95. text-align: center;
  96. display: flex;
  97. width: 95%;
  98. flex-direction: row;
  99. justify-content: center;
  100. }
  101. .line {
  102. border: 1px solid #ccc;
  103. opacity: 0.3;
  104. }

js

  1. //index.js
  2. //获取应用实例
  3. const app = getApp()
  4. // 页数
  5. var pageNum = 1;
  6. // 页量
  7. var pageCount = 10;
  8. Page({
  9. // 设置数据
  10. data: {
  11. // 列表数据数组
  12. dataList: [],
  13. // 轮播图
  14. indicatorDots: true,
  15. autoplay: true,
  16. interval: 3000,
  17. duration: 500,
  18. circular: true,
  19. // 基地址
  20. baseUrl: app.globalData.baseUrl,
  21. // 下拉刷新,上拉加载
  22. loading: false,
  23. // loaded: false,
  24. carousels: [],
  25. // itemtitle: [],
  26. avatar: '',
  27. // 图片
  28. imgUrls: [
  29. "/images/haibao/haibao-1.jpg",
  30. "/images/haibao/haibao-2.jpg"
  31. ]
  32. },
  33. // 跳转
  34. classify: function () {
  35. wx.navigateTo({
  36. url: '../classify/classify',
  37. })
  38. },
  39. post: function () {
  40. wx.navigateTo({
  41. url: '../posts/post',
  42. })
  43. },
  44. movies: function () {
  45. wx.navigateTo({
  46. url: '../movies/movies',
  47. })
  48. },
  49. errorFunction: function () {
  50. this.setData({
  51. avatar: 'images/haibao/haibao-1.jpg'
  52. })
  53. },
  54. /**
  55. * 生命周期函数--监听页面加载
  56. * 进入页面的时候开始加载一次数据
  57. */
  58. onLoad: function(options) {
  59. // 转换
  60. var that = this;
  61. // 加载轮播
  62. that.loadPic();
  63. // 加载数据列表 参数:页数于页量
  64. that.loadList(pageNum, pageCount);
  65. // 显示加载中
  66. wx.showLoading({
  67. title: '加载中',
  68. mask: true
  69. })
  70. // 显示时间
  71. setTimeout(function() {
  72. wx.hideLoading()
  73. }, 2000)
  74. },
  75. // 加载轮播
  76. loadPic: function(){
  77. var that = this;
  78. wx.request({
  79. url: app.globalData.baseUrl + 'js//carousel/list/', // 接口地址
  80. method: 'GET',
  81. header: {
  82. 'content-type': 'application/json' //默认值
  83. },
  84. // 成功
  85. success: function (res) {
  86. console.log("interface/activity/carousel/list/ 轮播 成功", res.data.data);
  87. console.log(res.data.data[0].imgUrl)
  88. // console.log(res.data.data.title)
  89. that.setData({
  90. carousels: res.data.data,
  91. // itemtitle: res.data.data.titile
  92. });
  93. },
  94. // 失败
  95. fail: function (err) {
  96. console.log("interface/activity/carousel/list/ 轮播 失败", err);
  97. }
  98. })
  99. },
  100. // 加载数据的函数
  101. loadList: function(page, count) {
  102. var that = this;
  103. //发送请求
  104. wx.request({
  105. url: app.globalData.baseUrl + 'j/activ' + page + '/' + count, //接口地址
  106. method: 'GET',
  107. header: {
  108. 'content-type': 'application/json' //默认值
  109. },
  110. // 成功
  111. success: function(res) {
  112. console.log("dataList:", that.data.dataList);
  113. var arr = that.data.dataList;
  114. if (page == 1) {
  115. arr = [];
  116. }
  117. if (res.data.total == 0) {
  118. //没有数据返回
  119. console.log(res.data.msg);
  120. // 显示没有更多数据了
  121. wx.showToast({
  122. title: '没有更多数据了……',
  123. icon: 'none'
  124. })
  125. // 显示时间
  126. setTimeout(function() {
  127. wx.hideToast()
  128. }, 2000)
  129. pageNum -= 1;
  130. return;
  131. }
  132. arr = arr.concat(res.data.data);
  133. console.log("interface/activity/list 成功", res.data);
  134. that.setData({
  135. dataList: arr
  136. });
  137. },
  138. // 失败
  139. fail: function(err) {
  140. console.log("interface/activity/list 失败", err);
  141. }
  142. })
  143. },
  144. // 详情页函数
  145. seeDetail: function(e) {
  146. if (!e.currentTarget.id == "") {
  147. wx.navigateTo({
  148. url: '../detail/detail?contentId=' + e.currentTarget.id
  149. })
  150. console.log(e)
  151. } else {
  152. console.log("无内容")
  153. }
  154. },
  155. /**
  156. * 页面相关事件处理函数--监听用户下拉动作,刷新
  157. */
  158. onPullDownRefresh: function() {
  159. console.log("下拉刷新")
  160. var that = this;
  161. wx.showNavigationBarLoading()
  162. setTimeout(() => {
  163. // 轮播刷新
  164. that.loadPic();
  165. pageNum = 1;
  166. that.loadList(pageNum, pageCount);
  167. wx.hideNavigationBarLoading() //完成停止加载
  168. wx.stopPullDownRefresh() //停止下拉刷新
  169. }, 2000)
  170. },
  171. /**
  172. * 页面上拉触底事件的处理函数
  173. */
  174. onReachBottom: function() {
  175. var that = this;
  176. console.log('上拉')
  177. if (this.data.loading) return;
  178. this.setData({
  179. loading: true
  180. });
  181. setTimeout(() => {
  182. pageNum += 1;
  183. that.loadList(pageNum, pageCount);
  184. that.setData({
  185. loading: false
  186. })
  187. }, 2000)
  188. },
  189. /**
  190. * 用户点击右上角分享
  191. */
  192. onShareAppMessage: function() {
  193. },
  194. // 获取用户
  195. getUserInfo: function(e) {
  196. console.log(e)
  197. app.globalData.userInfo = e.detail.userInfo
  198. this.setData({
  199. userInfo: e.detail.userInfo,
  200. hasUserInfo: true
  201. })
  202. }
  203. })

json

  1. {
  2. "enablePullDownRefresh": true
  3. }

达叔小生:往后余生,唯独有你
You and me, we are family !
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
https://www.jianshu.com/u/c785ece603d1

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

发表评论

表情:
评论列表 (有 0 条评论,721人围观)

还没有评论,来说两句吧...

相关阅读

    相关 程序播放音频列表

    微信小程序的音频播放    链接:[单曲播放][Link 1]   对于音频的播放,肯定会有多首音频的情况,这个时候播放下一曲的功能就需要做出来: 我这边做了一个粗糙的版