微信小程序开发实战(4):列表渲染

末蓝、 2023-02-24 08:42 97阅读 0赞

‍‍

-————支持作者请转发本文—————-

小程序还为我们提供了用于循环的列表渲染。通过wx:for属性,可以对数组进行循环,以便获取数组中的每一个元素,这一过程不需要编写一行JavaScript代码。下面是列表渲染的语法。

  1. <view wx:for="{
  2. {array}}">
  3. {
  4. {item}}
  5. </view>

其中array是待循环的数组,item是默认的变量,表示数组中每一个元素。

  1. wx:for-item

尽管通过默认的item变量,可以获取数组中的元素,但在有时,我们还是希望使用自定义的变量,这样会让代码更容易阅读。因此,可以使用wx:for-item属性执行自定义变量名。使用默认的item变量和使用wx:for-item属性自定义变量名的布局代码如下:

使用默认的item变量

  1. <view wx:for="{
  2. {messages}}" >
  3. {
  4. {item}}
  5. </view>

使用自定义的变量名

  1. <view wx:for="{
  2. {messages}}" wx:for-item="itemName" >
  3. {
  4. {itemName}}
  5. </view>

其中messages是在index.js中定义的一个数组变量,代码如下:

  1. Page({
  2. data: {
  3. messages:["辽宁","北京","广东","湖北","广西"],
  4. }
  5. )

运行后,系统会纵向输出messages数组的元素值。

  1. wx:for-index

使用wx:for-index指定的变量可以获取当前数组的索引(从0开始),例如,下面的布局代码会同时输出当前数组的索引和数组的值。

  1. <view wx:for="{
  2. {messages}}" wx:for-item="itemName" wx:for-index="i" >
  3. messages[{
  4. {i}}] = {
  5. {itemName}}
  6. </view>

运行后,会显示如图下图所示的输出内容。

format_png

  1. block wx:for

wx:for也可以用于block中,例如,下面的布局代码对数组[1,2,3,4,5]进行循环,分别输出每一个数组元素,以及数组元素的平方。

  1. <block wx:for="{
  2. {[1, 2, 3, 4, 5]}}">
  3. <view> [{
  4. {index}}] = {
  5. {item}} </view>
  6. <view> [{
  7. {index}}] * [{
  8. {index}}] = {
  9. {item * item}} </view>
  10. </block>

显示的效果如下图所示。

format_png 1

  1. 嵌套循环

wx:for和普通的for循环一样,同样可以嵌套。例如,下面的布局代码使用两层wx:for,并结合wx:if和wx:elif进行条件判断。

  1. <view wx:for="{
  2. {[1, 5, 9]}}" wx:for-item="i">
  3. <view wx:for="{
  4. {[2, 6, 4]}}" wx:for-item="j">
  5. <view wx:if="{
  6. {i <= j}}">
  7. {
  8. {i}} * {
  9. {j}} = {
  10. {i * j}}
  11. </view>
  12. <view wx:elif="{
  13. {i > j}}">
  14. {
  15. {i}} + {
  16. {j}} = {
  17. {i + j}}
  18. </view>
  19. </view>
  20. </view>

布局的显示效果如下图所示。

format_png 2

block wx:for同样可以嵌套使用,例如,要实现和图4-7相同效果的布局,只需要将上面布局代码的view wx:for改成block wx:for即可。

  1. <block wx:for="{
  2. {[1, 5, 9]}}" wx:for-item="i">
  3. <block wx:for="{
  4. {[2, 6, 4]}}" wx:for-item="j">
  5. <view wx:if="{
  6. {i <= j}}">
  7. {
  8. {i}} * {
  9. {j}} = {
  10. {i * j}}
  11. </view>
  12. <view wx:elif="{
  13. {i > j}}">
  14. {
  15. {i}} + {
  16. {j}} = {
  17. {i + j}}
  18. </view>
  19. </block>
  20. </block>
  1. wx:key

注意,本节的例子为了掩饰会使用后面章节介绍的一些组件,如switch、button等,读者无需理会这些组件的具体用法,后面章节会详细讲解。这个例子目的是为了理解wx:key的作用。

下面先在index.js文件中定义两个数组,其中objectArray是对象数组,numberArray是数值数组,代码如下:

  1. Page({
  2. data: {
  3. objectArray: [
  4. {id: 0, unique: 'key0'},
  5. {id: 1, unique: 'key1'},
  6. {id: 2, unique: 'key2'},
  7. {id: 3, unique: 'key3'},
  8. {id: 4, unique: 'key4'},
  9. {id: 5, unique: 'key5'},
  10. ],
  11. numberArray: [1, 2, 3, 4]
  12. }
  13. })

其中objectArray的每一个元素有两个属性:id和unique,其中unique属性的属性值一定是唯一的。

现在编写如下的布局代码。

  1. <switch wx:for="{
  2. {objectArray}}" style="display: block;"> {
  3. {item.id}} </switch>
  4. <button bindtap="switch"> Switch </button>

这段布局代码中使用了两个组件:switch和button。前者是选择组件(类似于Checkbox),后者是按钮组件。bindtap属性指定了点击按钮后要调用的函数(相当于单击事件)。运行这段布局代码后,会显示如下图所示的效果。

format_png 3

往期回顾:

微信小程序开发实战(1):容器组件

微信小程序开发实战(2):添加广告轮询图

微信小程序开发实战(3):条件渲染

对本文感兴趣,可以加李宁老师微信公众号(unitymarvel):

format_png 4

关注 极客起源 公众号,获得更多免费技术视频和文章。

format_png 5

发表评论

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

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

相关阅读

    相关 程序WXML之列表渲染

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

    相关 程序开发实战

    自从小程序对个人开发者开放以来,就一直想着做一个自己的小程序,再关联到自己的公众号。 小程序截图 ![这里写图片描述][20170613090925118]  ![这里