微信小程序开发-新闻列表之新闻列表绑定

Myth丶恋晨 2022-06-11 02:26 351阅读 0赞

微信小程序开发-新闻列表之新闻列表绑定开发教程:

1、效果图预览

这里写图片描述


2、准备工作

在拿到效果图后不要先急着去写代码,而是要去分析一下页面的整体结构,用什么方式定位和布局。小程序里建议使用flex布局,因为小程序对flex的支持是很好的。

上一篇博客中完成了轮播图部分,接下来继续完成下面的新闻列表部分

3、wxml部分

新闻列表部分整体使用flex纵向布局比较合适,
先把页面内的元素标签和类名写好。

  1. <view class="post-container">
  2. <view class="post-author-date">
  3. <image class="post-author" src="{
  4. {
  5. item.avatar}}"></image>
  6. <text class="post-date">{
  7. {
  8. item.date}}</text>
  9. </view>
  10. <text class="post-title">{
  11. {
  12. item.title}}</text>
  13. <image class="post-image" src="{
  14. {
  15. item.imgSrc}}"></image>
  16. <text class="post-content">{
  17. {
  18. item.content}}</text>
  19. <view class="post-like">
  20. <image class="post-like-image" src="{
  21. {
  22. item.view_img}}"></image>
  23. <text class="post-like-font">{
  24. {
  25. item.reading}}</text>
  26. <image class="post-like-image" src="{
  27. {
  28. item.collect_img}}"></image>
  29. <text class="post-like-font">{
  30. {
  31. item.collection}}</text>
  32. </view>
  33. </view>
  34. 1
  35. 2
  36. 3
  37. 4
  38. 5
  39. 6
  40. 7
  41. 8
  42. 9
  43. 10
  44. 11
  45. 12
  46. 13
  47. 14
  48. 15
  49. 1
  50. 2
  51. 3
  52. 4
  53. 5
  54. 6
  55. 7
  56. 8
  57. 9
  58. 10
  59. 11
  60. 12
  61. 13
  62. 14
  63. 15

4、wxss部分

  1. .post-container{
  2. display: flex;
  3. flex-direction: column;
  4. margin-top: 20rpx;
  5. margin-bottom: 40rpx;
  6. background-color: #fff;
  7. border-bottom: 1px solid #ededed;
  8. border-top: 1px solid #ededed;
  9. padding-bottom: 5px;
  10. }
  11. .post-author-date{
  12. margin: 10rpx 0 20rpx 10rpx;
  13. }
  14. .post-author{
  15. width: 60rpx;
  16. height: 60rpx;
  17. vertical-align: middle;
  18. }
  19. .post-date{
  20. margin-left: 20rpx;
  21. vertical-align: middle;
  22. margin-bottom: 5px;
  23. font-size: 26rpx;
  24. }
  25. .post-title{
  26. font-size: 34rpx;
  27. font-weight: 600;
  28. color: #333;
  29. margin-bottom: 10px;
  30. margin-left: 10px;
  31. }
  32. .post-image{
  33. width: 100%;
  34. height: 340rpx;
  35. margin: auto 0;
  36. margin-bottom: 15px;
  37. }
  38. .post-content{
  39. color: #666;
  40. font-size: 28rpx;
  41. margin-bottom: 20rpx;
  42. margin-left: 20rpx;
  43. letter-spacing: 2rpx;
  44. line-height: 40rpx;
  45. }
  46. .post-like{
  47. font-size: 13px;
  48. flex-direction: row;
  49. line-height: 16px;
  50. margin-left: 10px;
  51. }
  52. .post-like-image{
  53. width: 16px;
  54. height: 16px;
  55. margin-right: 8px;
  56. vertical-align: middle;
  57. }
  58. .post-like-font{
  59. vertical-align: middle;
  60. margin-right: 20px;
  61. }
  62. 1
  63. 2
  64. 3
  65. 4
  66. 5
  67. 6
  68. 7
  69. 8
  70. 9
  71. 10
  72. 11
  73. 12
  74. 13
  75. 14
  76. 15
  77. 16
  78. 17
  79. 18
  80. 19
  81. 20
  82. 21
  83. 22
  84. 23
  85. 24
  86. 25
  87. 26
  88. 27
  89. 28
  90. 29
  91. 30
  92. 31
  93. 32
  94. 33
  95. 34
  96. 35
  97. 36
  98. 37
  99. 38
  100. 39
  101. 40
  102. 41
  103. 42
  104. 43
  105. 44
  106. 45
  107. 46
  108. 47
  109. 48
  110. 49
  111. 50
  112. 51
  113. 52
  114. 53
  115. 54
  116. 55
  117. 56
  118. 57
  119. 58
  120. 59
  121. 60
  122. 61
  123. 62
  124. 1
  125. 2
  126. 3
  127. 4
  128. 5
  129. 6
  130. 7
  131. 8
  132. 9
  133. 10
  134. 11
  135. 12
  136. 13
  137. 14
  138. 15
  139. 16
  140. 17
  141. 18
  142. 19
  143. 20
  144. 21
  145. 22
  146. 23
  147. 24
  148. 25
  149. 26
  150. 27
  151. 28
  152. 29
  153. 30
  154. 31
  155. 32
  156. 33
  157. 34
  158. 35
  159. 36
  160. 37
  161. 38
  162. 39
  163. 40
  164. 41
  165. 42
  166. 43
  167. 44
  168. 45
  169. 46
  170. 47
  171. 48
  172. 49
  173. 50
  174. 51
  175. 52
  176. 53
  177. 54
  178. 55
  179. 56
  180. 57
  181. 58
  182. 59
  183. 60
  184. 61
  185. 62

5、数据绑定

数据绑定很重要,那么多的新闻列表,不可能每个新闻都复制粘贴一下代码。况且小程序还限制在1MB大小。

我们把数据内容单独放在一个文件夹里,模拟从网络加载的情况

如图,在根目录新建一个data文件夹,里面新建一个posts-data.js文件
这里写图片描述


5.1、posts-data.js

在posts-data.js里定义一个local_database数组

  1. var local_database=[
  2. {
  3. date:"Nov 10 2016",
  4. title:"文章标题1",
  5. imgSrc:"/images/post/crab.png",
  6. avatar:"/images/avatar/1.png",
  7. content:"文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介",
  8. reading:"92",
  9. collection:"65",
  10. view_img:"/images/icon/chat.png",
  11. collect_img:"/images/icon/view.png",
  12. },
  13. {
  14. date:"Nov 20 2016",
  15. title:"文章标题2",
  16. imgSrc:"/images/post/bl.png",
  17. avatar:"/images/avatar/2.png",
  18. content:"文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介",
  19. reading:"88",
  20. collection:"66",
  21. view_img:"/images/icon/chat.png",
  22. collect_img:"/images/icon/view.png",
  23. },
  24. {
  25. date:"Nov 25 2016",
  26. title:"文章标题3",
  27. imgSrc:"/images/post/cat.png",
  28. avatar:"/images/avatar/3.png",
  29. content:"文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介文章简介",
  30. reading:"123",
  31. collection:"55",
  32. view_img:"/images/icon/chat.png",
  33. collect_img:"/images/icon/view.png",
  34. }
  35. ]
  36. 1
  37. 2
  38. 3
  39. 4
  40. 5
  41. 6
  42. 7
  43. 8
  44. 9
  45. 10
  46. 11
  47. 12
  48. 13
  49. 14
  50. 15
  51. 16
  52. 17
  53. 18
  54. 19
  55. 20
  56. 21
  57. 22
  58. 23
  59. 24
  60. 25
  61. 26
  62. 27
  63. 28
  64. 29
  65. 30
  66. 31
  67. 32
  68. 33
  69. 34
  70. 35
  71. 36
  72. 1
  73. 2
  74. 3
  75. 4
  76. 5
  77. 6
  78. 7
  79. 8
  80. 9
  81. 10
  82. 11
  83. 12
  84. 13
  85. 14
  86. 15
  87. 16
  88. 17
  89. 18
  90. 19
  91. 20
  92. 21
  93. 22
  94. 23
  95. 24
  96. 25
  97. 26
  98. 27
  99. 28
  100. 29
  101. 30
  102. 31
  103. 32
  104. 33
  105. 34
  106. 35
  107. 36

别忘了在posts-data.js文件最后加上输出

  1. module.exports={
  2. postList:local_database
  3. }
  4. 1
  5. 2
  6. 3
  7. 1
  8. 2
  9. 3

5.2、post.wxml使用数据绑定:

例如用户头像图片的路径,用双大括号括起来 里面和数组里定义的要相同,然后前面要加上item. 意思是绑定数组里定义的avatar,代码如下:

  1. <image class="post-author" src="{
  2. {
  3. item.avatar}}"></image>
  4. 1
  5. 1

5.3、post.js

先把posts-data.js文件引入:

  1. var postsData=require('../../data/posts-data.js')
  2. 1
  3. 1

然后在onLoad: 函数内设置Data的值

  1. onLoad:function(options){
  2. // 生命周期函数--监听页面加载
  3. this.setData({
  4. posts_key:postsData.postList
  5. })
  6. },
  7. 1
  8. 2
  9. 3
  10. 4
  11. 5
  12. 6
  13. 1
  14. 2
  15. 3
  16. 4
  17. 5
  18. 6

6、for循环

在wxml要循环的部分外面加上<block> </block>标签

  1. <block wx:for="{
  2. {
  3. posts_key}}" wx:for-item="item">
  4. <view class="post-container">
  5. <view class="post-author-date">
  6. <image class="post-author" src="{
  7. {
  8. item.avatar}}"></image>
  9. <text class="post-date">{
  10. {
  11. item.date}}</text>
  12. </view>
  13. <text class="post-title">{
  14. {
  15. item.title}}</text>
  16. <image class="post-image" src="{
  17. {
  18. item.imgSrc}}"></image>
  19. <text class="post-content">{
  20. {
  21. item.content}}</text>
  22. <view class="post-like">
  23. <image class="post-like-image" src="{
  24. {
  25. item.view_img}}"></image>
  26. <text class="post-like-font">{
  27. {
  28. item.reading}}</text>
  29. <image class="post-like-image" src="{
  30. {
  31. item.collect_img}}"></image>
  32. <text class="post-like-font">{
  33. {
  34. item.collection}}</text>
  35. </view>
  36. </view>
  37. </block>
  38. 1
  39. 2
  40. 3
  41. 4
  42. 5
  43. 6
  44. 7
  45. 8
  46. 9
  47. 10
  48. 11
  49. 12
  50. 13
  51. 14
  52. 15
  53. 16
  54. 17
  55. 1
  56. 2
  57. 3
  58. 4
  59. 5
  60. 6
  61. 7
  62. 8
  63. 9
  64. 10
  65. 11
  66. 12
  67. 13
  68. 14
  69. 15
  70. 16
  71. 17

语法是:

wx:for=”{ {数组名}}”


7、源码下载

——>csdn免积分下载

发表评论

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

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

相关阅读

    相关 程序WXML列表渲染

    这一章节我们来学习一下我们在程序中另一个重要的语法结构循环结构,在java或C中是用for关键字的,在微信小程序中也是for关键字,但是不同的是语法结构有点不同,下面我们介绍一

    相关 程序数据

    微信小程序是通过什么方法来实现数据绑定的呢?答案是状态模式-单向数据流。 状态模式定义一个对象,改对象可以通过管理其状态的变化,从而实现应用程序做出相应的变化。