微信小程序开发(五)小程序条件渲染和列表渲染

说到条件,相比大家都是很熟悉的了,要么符合什么什么条件,要么不符合什么什么条件,在我们的编程里就是if else,从if开始到else结束。比如我们说小明的考试成绩出来了,如果分数大于60分及格,不然就是不及格,那么我们的条件语句就可以写成下面这个样子。

if(score > 60){
          
   
	及格
}else{
          
   
	不及格
}

条件渲染

我们先制定一个规则,小明考试成绩出来了,如果在80分及以上是红分,如果小于60分是不及格,如果在60分到79分之间就是及格。

接下来我们就可以来编写我们的条件约束了:

首先不及格,条件是分数score小于60分:

<view wx:if="{
          
   {score < 60 }}"> 不及格</view>

然后红分,条件是分数在80及以上的分数:

<view wx:elif="{
          
   {score >= 80 }}"> 红分</view>

最后就还剩下60分到79分的及格:

<view wx:else="{
          
   {score >= 80 }}"> 及格</view>

先输入一下80分看一下效果,我们可以看到显示的是红分:

我们在输入一个不及格的分数看一下效果:

最后输入一个及格的分数:

三个分数对应三个结果,说明我们的条件语句没有写错。

这里额外提一点,小程序的判断一个对象是否为空,使用的是==’’,注意的是等号后面不是双引号""而是单引号‘’这里也举个例子:

我们判断小明的名字是否为空:

<view wx:if="{
          
   {name !== }}">我有名字叫:{
          
   {
          
   name}}</view>
<view wx:else>我没有名字</view>

我们现在data里面声明一个name,然后给他一个空值,来看一下效果:

data: {
          
   
  score:70,
  name:""
},

这里名字为空,走了else

我们再给data里面的name设置一个值,比如叫小明,这里就走了if

小程序的条件渲染就这么多了,其实也很简单明了,如果符合if里面的条件就执行if里面的操作,不然就执行else里面的操作。

列表渲染

我们知道现在很多市面上的APP都有很多列表数据,但是那么多列表数据我们不可能每一条数据就在wxml文件里面手动添加一个view去显示,这个不现实,也不利于修改和维护;所以这就要用到小程序的列表渲染,列表渲染可能不好理解,其实就是通过for循环来循环展示数据。

操作步骤: 1.首先在页面onLoad回调里面创建一个list的数据并添加,但是这里添加的时候要注意,前面说到给data赋值的时候是this.setData(对象名),但是我们现在创建是数据是一个集合,不能直接set到data里面去,因为data只能接收一个对象,所以我们要通过{}的形式进行赋值,我们现在data里面创建一个数据源进行接收:

data: {
          
   
  //创建集合数据并初始化
  list:[]
},

2.在onLoad里面创建模拟数据并set到data里面去:

onLoad: function (options) {
          
   
    var dataList = [{
          
   
      img:"../../images/code-cloud-callback-config.png",
      name:"小明"
    },{
          
   
      img:"../../images/code-db-inc-dec.png",
      name:"小明2"
    },{
          
   
      img:"../../images/code-db-onAdd.png",
      name:"小明3"
    },{
          
   
      img:"../../images/code-db-onQuery.png",
      name:"小明4"
    }]
    /**
     * 给data添加数据
     * data传入的需要是一个对象,不能直接传list  this.setData(dataList) 是不允许的
     * 传入list需要通过以下方法
     */
    this.setData({
          
   
      list:dataList
    })
},

3.我们在控制台的AppData中就可以看到data中list的数据了:

4.接下来回到index.wxml文件,先创建一个view代表整个list,也就是整个模块,然后在创建一个block,用block来包裹集合里面的子项,也就是item,然后在block执行for循环操作;最后在block里面创建一个view,这一个view就是一个item,item里面包含一张图片、一个名字、以及当前item的下标索引:

<!--miniprogram/pages/index/index.wxml-->
<text>小程序条件渲染和列表渲染</text>
<view class="list">
  <!-- block包裹住item
    wx:for="{
          
   {list}}"  list就是data里面的数据源
    wx:for-item="item" 定义item的变量名,我们要获取list数据源中item的值就要通过变量名去获取,比如img就是item.img
    wx:for-index="itemId" 定义item索引的变量名,在小程序中item索引有一个默认的变量名index
  -->
  <block wx:for="{
          
   {list}}" wx:for-item="item" wx:for-index="itemId">
  <view class="item">
    <view class="item_img">
      <image src="{
          
   {item.img}}"></image>
    </view>
    <view class="item_name">name:{
          
   {
          
   item.name}}</view>
    <view class="item_index">index:{
          
   {
          
   itemId}}</view>
  </view>
 </block>

</view>

5.这里就可以查看最终效果了:

index.wxss文件的代码很简单,随便写了一个样式,还是贴一下吧:

/* miniprogram/pages/index/index.wxss */
.list{
          
   
  display: flex;
  padding: 0 30rpx;
  flex-direction: row;
  justify-content: space-between;
  flex-wrap: wrap;

}

.item{
          
   
  width: 48%;
}

.item img{
          
   
  width: 100%;
  height: 100rpx;
}

小程序的条件渲染和列表渲染到这里就结束了。很简单,也很好理解。

经验分享 程序员 微信小程序 职场和发展