1. 列表渲染

1.1 wx:for

  • 在组件上使用wx:for控制属性绑定一个数组, 即可使用数组中各项的数据重复渲染该组件
  • 默认数组的当前项的下标变量名默认为 index, 数组当前项的变量名默认为item

    演示

    index.js中我们定义以下数据
 data: {
arr: ["路明非", "楚子航", "凯撒", "芬格尔"],
},

编写index.wxml文件代码如下

  <!-- 列表渲染测试 -->
<view class="goStudy" wx:for="{{arr}}">
<text>{{item}} {{index}}</text>
</view>

运行效果:

index.jsdata属性中添加以下数据

 arr_obj: [{
name: "路明非",
blood: "S"
},
{
name: "楚子航",
blood: "A"
},
{
name: "凯撒",
blood: "A"
},
{
name: "芬格尔",
blood: "F"
}]
  • 渲染
  <!-- 列表渲染测试 -->
<view class="goStudy" wx:for="{{arr_obj}}">
<text>姓名:{{item.name}},血统: {{item.blood}}级 </text>
</view>


  • 使用 wx:for-item 可以指定数组当前元素的变量名,
  • 使用 wx:for-index 可以指定数组当前下标的变量名:
<view class="goStudy" wx:for="{{arr}}"  wx:for-index="arr_index" wx:for-item="arr_item">
<text>{{arr_item}},{{arr_index}}</text>
</view>

1.2 block wx:for

可以将 wx:for 用在<block/>标签上,以渲染一个包含多节点的结构块。例如:

<block wx:for="{{arr}}">
<view> {{index}}: </view>
<view> {{item}} </view>
</block>

渲染效果:


1.3 wx:key

如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 input 中的输入内容,switch 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。

wx:key 的值以两种形式提供:

  1. 字符串, 代表在for循环的array中的item的某个property, 该property的值需要是列表中唯一的字符串或数字, 且不能动态改变
  2. 保留关键字*this 代表在for循环中item本身, 这种表示需要item本身是一个唯一的字符串或数字
  <view class="goStudy" wx:for="{{arr}}" wx:key="item">
<text>{{item}}</text>
</view>

1.4 注意事项

  1. wx:for 的值为字符串时,会将字符串解析成字符串数组
<view class="goStudy" wx:for="abc">
<text>{{item}}</text>
</view>

等同于

<view class="goStudy" wx:for='{{ ["a","b","c"] }}'>
<text>{{item}}</text>
</view>

  1. 花括号和引号之间如果有空格,将最终被解析成为字符串
<view wx:for="{{[1,2,3]}} ">
{{item}}
</view>

等同于

<view wx:for="{{[1,2,3] + ' '}}" >
{{item}}
</view>

2. 条件渲染

2.1 wx:if

  • 在框架中,使用 wx:if="" 来判断是否需要渲染该代码块:
<view wx:if="{{condition}}"> True </view>
  data: {
isShow:true,
},



如果将isShow的值改为false, 那么 包含True字符的组件就不会再被渲染


2.2 wx:elif + wx:else

例一: wx:elif

  <!-- 条件渲染测试- wx:elif -->
<view wx:if="{{isShow}}"> True </view>
<view wx:elif="{{!isShow}}">False</view>

例二: wx:else

data: {
flag: 1,
}
<!-- 条件渲染测试 wx:else -->
<view wx:if="{{flag === 0}}"> {{flag}}</view>
<view wx:elif="{{flag === 1}}">{{flag}}</view>
<view wx:else="{{flag}}">{{flag}}</view>


2.3 block wx:if

  • 因为 wx:if 是一个控制属性,需要将它添加到一个标签上。如果要一次性判断多个组件标签,可以使用一个 <block/> 标签将多个组件包装起来,并在上边使用 wx:if 控制属性。
<block wx:if="{{true}}">
<view> view1 </view>
<view> view2 </view>
</block>

  • 注意<block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

2.4 wx:if vs hidden

  • 因为wx:if之中的模板也可能包含数据绑定, 所以wx:if的条件值切换时, 框架有一个局部渲染的过程, 因为它会确保条件块在切换时销毁或重新渲染
  • 同时wx:if也是惰性的, 如果在初始渲染条件为 false, 框架什么也不做, 在条件第一次变成真的时候才开始局部渲染
  • 相比之下, hidden就简单的多, 组件始终会被渲染, 只是简单的控制显示与隐藏
  • 一般来说, wx:if有更高的切换消耗hidden有更高的初始渲染消耗, 因此, 如果需要频繁切换的情景下, 用hidden更好, 如果在运行时条件不大可能改变则wx:if较好

微信小程序学习笔记二 列表渲染 + 条件渲染的更多相关文章

  1. 微信小程序学习笔记二 数据绑定 + 事件绑定

    微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...

  2. 【微信小程序学习笔记】入门与了解

    [微信小程序学习笔记(一)] IDE 下载安装 下载地址 官方工具:https://mp.weixin.qq.com/debug/w … tml?t=1476434678461 下载可执行文件后,可按 ...

  3. 微信小程序学习笔记一 小程序介绍 & 前置知识

    微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...

  4. 微信小程序学习笔记(二)--框架-全局及页面配置

    描述和功能 框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑. 响应的数 ...

  5. 微信小程序学习笔记(阶段一)

    一阶段学习过程: (一)看官方文档的简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/ (二)看小码哥视频:https://chuanke.baidu.co ...

  6. 微信小程序学习笔记(3)--------框架之配置

    我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. app.json 配置项列表 属性 类型 必填 描述 pages Stri ...

  7. 微信小程序学习笔记(一)--创建微信小程序

    一.创建小程序 1.申请帐号.安装及创建小程序,请参照官方文档里面的操作 https://developers.weixin.qq.com/miniprogram/dev/. 小程序在创建的时候会要求 ...

  8. 微信小程序学习笔记以及VUE比较

    之前只是注册了一下微信小程序AppID,随便玩了玩HelloWorld!(项目起手式),但是最近看微信小程序/小游戏,崛起之势不可阻挡.小程序我来了!(果然,一入前端深似海啊啊啊啊啊~) 编辑器: S ...

  9. 微信小程序学习笔记1--小程序的代码构成

    最近打算学习一下微信小程序,看了微信公众平台的文档感觉还比较简单,就从这个方向重新找回学习的状态吧: 1.先了解一下小程序的代码构成: 创建项目后会看到四种后缀的文件: .json 后缀的 JSON ...

随机推荐

  1. python之数据驱动Excel操作(方法一)

    一.Mail163.xlsx数据如下: 二.Mail163.py脚本如下 import xlrdimport unittestfrom selenium import webdriverfrom se ...

  2. Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示

    前言   在ubuntu上实现MPlayer播放器播放音乐.   Demo                Mplayer   MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件 ...

  3. 大数据学习(08)—— Hive简介

    前面的Hadoop学习是非常体系化的,有主线有细节.到了Hive这里,知识点非常零散,感觉没有什么主线能把它串起来.从官方网站上就能看出这点差异. 什么是Hive Hive是一个基于Hadoop的企业 ...

  4. 机器学习 - k-means聚类

    k-means简介 k-means是无监督学习下的一种聚类算法,简单说就是不需要数据标签,仅靠特征值就可以将数据分为指定的几类.k-means算法的核心就是通过计算每个数据点与k个质心(或重心)之间的 ...

  5. noip模拟22[d·e·f]

    noip模拟22 solutions 哈哈哈,这次暴力打满直接190,其实不到哈哈哈,187.. 这次的题暴力极其好打,但是正解确实不简单... 打了好久才改完这个题,改完的时候爽暴了 这些一个字母的 ...

  6. vivo 全球商城:优惠券系统架构设计与实践

    一.业务背景 优惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口.优惠券系统是vivo商城营销模块中一个重要组成部分,早在15年vivo商城还是单体应用时,优惠券 ...

  7. OpenFaaS实战之八:自制模板(maven+jdk8)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. a href="tel" 拨打电话

    电话号码是固定的: <a href="'tel:10086">10086</a> 电话号码是动态获取时: 走默认的方式失败 <a href=" ...

  9. HCIA-网络层IP地址

    TCP/IP 每一层关联性 网络接口层-->TYPE 上层的网络层 --> Protocol -->不同的传输层协议 DSAP SSAP IP地址 剩下的8个字节 IPV4地址 4个 ...

  10. Flutter 中的动画

    Flutter 中动画的创建有很多种, 需要根据具体的需求选择不同的动画.如果只是简单的布局等的动画直接使用最简单的隐式动画就可以了,因为隐式动画是由框架控制的,所以仅仅只需要更改变需要变化属性就可以 ...