微信小程序 《新闻列表》 案例
今天带着练习一个小程序的基础练习
《新闻列表》
内容如图:
如要求:
1.主页头部的轮播图
2.中间内容上的信息案列排版。
3.上拉加载内容。
4.在信息加载完成后,给用户提示
一,步骤。
要求1:主页头部的轮播图
我们看一下这个关于轮播图的相关文档。
注意文档内的属性内容 我们会看到这么一个案例。
当然我们这个要求没有这么细节,只需要上边的轮播图即可。 所以我们摘取并修改后,看下面代码
<swiper class="Lun" circular="true" indicator-dots="true" autoplay="true" interval="1000" duration="500">
        <block wx:for="{
          
   {Lun}}" wx:key="key">
          <swiper-item class="Lun_1" >
              <image src="{
          
   {item.imgUrl}}" catchtap="tiao" data-id="{
          
   {item.id}}"></image>
          </swiper-item>
        </block>
  </swiper> 
在小程序中,轮播图是 swiper 人家官方封装好的。
在swiper中写你的要求 block 中是你要遍历在轮播图的图片内容。 image 就是我们看到的视图位置,我们要将遍历的图片所放的位置。
简单说一下,我们这个轮播图所用到文档中的几个属性. 当然要熟悉小程序的话,还得是多看文档。
属性1: circular boolean false 否 是否采用衔接滑动 1.0.0 属性2: indicator-dots boolean false 否 是否显示面板指示点 1.0.0 属性3: autoplay boolean false 否 是否自动切换 1.0.0 属性4: interval number 5000 否 自动切换时间间隔 1.0.0 属性5: duration number 500 否 滑动动画时长 1.0.0
data: {
    Lun:[],
    list:[],
    p:2,
    noMore:true
  },
 * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.request({
          
   
      url: http://localhost:8989/getData,
      success:(data)=>{
        this.setData({
          
   
          Lun:data.data.data,
          list:data.data.data
          
        })
      }
    })
  }, 
上代码,是我们在小程序中请求数据,并给原数据提交。 此时,轮播图可以拿到数据,并做上渲染。
此接口只是案例。
要求2:中间内容上的信息案列排版。
渲染中间主体内容。
<view class="Wu_w" wx:for="{
          
   {list}}" wx:key="key">
      <view class="Yang" catchtap="tiao" data-id="{
          
   {item.id}}">
        <view class="Yang_1"><image src="{
          
   {item.imgUrl}}"></image></view>
        <view class="from">
          <view>事件:{
         
  {item.title}}</view>
          <view>时间:{
         
  {item.newTime}}</view>
          <view class="from_1">来自:{
         
  {item.from}}</view>
        </view>
       
      </view>
    </view>  
要求3:上拉加载内容。
onReachBottom() 页面上拉触底事件的处理函数
我们看代码:
onReachBottom() {
    let p=this.data.p++
      wx.request({
          
   
        url: http://localhost:8989/getData?p=+p,
        success:(res)=>{
          
          this.setData({
          
   
            list:this.data.list.concat(res.data.data)
          })
        }
      }) 
  }, 
如图,我们在给data:{}中的p 定义初始值为2 的情况下。
为什么p 定义初始值为2?
我们下年在修改data中的数据时,使用this.setData,concat拼接数据。 它会将我们第一次请求出来的第一页内容,重复渲染两边。导致内容重复。
我们这里的方法很笨拙。若有简便方法,按简便方法来。
要求4:在信息加载完成后,给用户提示
onReachBottom() {
      let p=this.data.p++
        wx.request({
          
   
          url: http://localhost:8989/getData?p=+p,
          success:(res)=>{
            
            this.setData({
          
   
              list:this.data.list.concat(res.data.data)
            })
          }
        })
新增
???
        if(this.data.list.length>=23){
          this.setData({
          
   
            noMore:true
          })
        }
???
        
    }, 
上面的新增,是我们做的一个简单的判断条件。若我们请求的数据,达到我们知道的总数据的情况下。我们将data中的noMore值改为true,
<view wx:if="{
          
   {noMore}}" style="text-align: center;">已经到底了...</view> 
来达到此文字的显示效果。很简单也有点简陋。若有优化的空间,和想法。按各位大佬你们的思路和想法。
二,过程中要注意的几点。
我们总结一下,在编写中可能遇到的一些问题。
2.我们在后端请求成功的时候。
success:(res)=>{
            
            this.setData({
          
   
              list:this.data.list.concat(res.data.data)
            })
          } 
要按照这个箭头函数的格式来书写,否则,函数内部的this定义就错了。会找不到。
3.文档第一位
上一篇:
			            uniapp开发微信小程序-2.页面制作 
			          
			          
			        