IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 小程序WXML语法 -> 正文阅读

[移动开发]小程序WXML语法

一、WXML模块语法---数据绑定

? ?1、数据绑定的基本原则

? ?? ? 1.在data中定义数据

? ? ? ?2.在WXML中使用数据

? ??2、在data中定义页面的数据

? ? ? ? ??在页面对应的.js文件中,把数据定义到data对象中即可:

Page({
   data:{
    // 字符串类型的数据
    info:'init data',
    // 数组类型的数据
    msgList:[{msg:'hello'},{msg:'world'}] 
  }
})

? ? ?3、Mustache语法的格式

? ? ? ? ? ?把data中的数据绑定到页面中渲染,使用Mustache语法(双大括号)将变量抱起来即可。

<view>{{要绑定的数据名称}}</view>

? ? ?4、Mustache语法的应用场景

? ? ? ? ? ?1.绑定内容

? ? ? ? ? ? ? ?上面2、3已演示。

? ? ? ? ? ?2.动态绑定属性

? ? ? 页面的数据如下:

Page({
   data:{
      imgSrc:'图片路径'
  }
})

? ? ? 页面的结构如下:

<image src="{{imgSrc}}"></image>
//如果不希望图片变形,可在image后加入mode=""属性

? ? ? ? ? ?3.运算(三元运算、算数运算等)

? ? ?(三元运算) 页面的数据如下:

Page({
   data:{
     randomNum:Math.random()*10 //生成10以内的随机数
  }
})

? ? ? 页面的结构如下:

<view>{{randomNumber>=5?'随机数大于或等于5':'随机数字小于5'}}</view>
//如果希望查看当前所有数据,可以通过调试器里的AppData查看所有数据

? ? ?(算数运算)页面的数据如下:

Page({
   data:{
    randomNum:Math.random(),toFixed(2) //生成一个带两位小数的随机数,例如0.34
  }
})

? ? ? 页面的结构如下:

<view>生成100以内的随机数:{{randomNum*100}}</view>

? ?二、WXML模块语法---事件绑定

1.?小程序中常用的事件: ? ? ? ??

2.在小程序中,不存在HTML中的onclick鼠标点击事件,而是通过tap事件来响应用户的触摸行为。

? ? ?1.通过bindtap,可以为组件绑定tap触摸事件,语法如下

<button type="primary" bindtap="btnTapHandler">按钮</button>

? ? ?2.在页面的.js文件中定义对应的事件处理函数,事件参数通过形参event(一般简写成e)来接收:

Page({
   data:{
   },
   btnTapHandler(e){ //按钮的tap事件处理函数
     console.log(e) //事件参数对象e
  }
})

? ? ? ?3.事件对象的属性列表

? ?当事件回调触发的时候,会收到一个事件对象event,它的详细属性如下表所示:

? ? ?4、在事件处理函数中为data中的数据赋值

? ? ? ? ??通过调用this.setData(dataObjeck)方法,可以给页面data中的数据重新赋值,示例如下:

<button type="primary" bindtap="CountChange">+1</button>
//页面的.js文件
Page({
   data:{
      count:0
   },
  //修改count的值
   changCount(){
    this.setData({
      count:this.data.count+1 
     })
    }
  }
})

? ? ?5、事件传参

? ? ?注:小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数。

? ? ? ? ? ? 可以为组件提供 data-*自定义属性传参,其中*代表的是参数的名字,示例代码如下:

<button bindtap="btnHandler" data-info="{{2}}">事件传参</button>

? ? ? ? ? ?info会被解析为参数的名字、数值2会被解析为参数的值

? ??在事件处理函数中,通过event.target.dataset.参数名即可获取到具体参数的值,示例代码如下:

btnHandler(event){
    //dataset是一种对象,包含了所有通过data-*传递过来的参数值
    console.log(event.target.dataset)
    //通过dataset可以访问到具体参数的值
    console.log(event.target.dataset.info)
}

? ? 6、bindinput的语法格式

? ? ?在小程序中,通过input事件来响应文本框的输入事件,语法格式如下:

? ? ?1.通过bindinput,可以为文本框绑定输入事件:

<input bindinput=""inputHandler"></input>

? ? ?2.在页面的.js文件中定义事件处理函数:

inputHandler(e){
//e.detail.value 是变化过后,文本框最新的值
console.log(e.detail.value)
}

? ?7、实现文本框和data之间的数据同步

? ? ??步骤:1.定义数据

Page({
    data:{
        msg:'你好'
      }
   })

2.渲染结构

<input value="{{msg}}" bindinput="iptHandler"></input>

3.美化样式

input{
border:1px solid #ccc;
padding:5px;
margin:5px;
border-radius:3px;
}

4.绑定input事件处理函数

//文本框内容改变的事件
iptHandler(e){
    this.setData({
        //通过e.detail.value获取到文本框最新的值
        msg:e.detail.value
    })
}

三、WXML模板语法---条件渲染

? ? ? ? 1、wx:if

? ? ? ? ? ??在小程序中,使用wx:if="f{condition}}"来判断是否需要渲染该代码块:

<view wx:if="{{condition}}">True</view>

? ? ? ? ? ? ?也可以用wx:elif 和 wx:else来添加else判断:

<view wx:if="{{type===1}}">男</view>
<view wx:elif="{{type===2}}">女</view>
<view wx:else>保密</view>

2、结合<block>使用wx:if

如果要一次性控制多个组件的展示与隐藏,可以使用一个<block></block>标签将多个组件包装起来,并在<block>标签上使用wx:if 控制属性,示例如下:

<block wx:if="{{true}}">
    <view>view1</view>
    <view>view2</view>    
</block>

注意: <block>并不是一个组件,它只是一个包裹性质的容器,不会在页面中做任何渲染

3、hidden

在小程序中,直接使用hidden="{f condition }"也能控制元素的显示与隐藏:

<view hidden="{{condition}}">条件为true隐藏,条件为false显示</view>

4、wx:if与hidden的对比

? ? ?1.运行方式不同

? ? ? ? wx:if以动态创建和移除元素的方式,控制元素的展示与隐藏

? ? ? ? hidden以切换样式的方式(display: none/block;),控制元素的显示与隐藏

? ? ?2.使用建议

? ? ? ? ?频繁切换时,建议使用hidden

? ? ? ? ?控制条件复杂时,建议使用wx:if 搭配wx:elif、wx:else进行展示与隐藏的切换

四、WXML模板语法---列表渲染

? ??1、wx:for

? ? ??通过wx:for可以根据指定的数组,循环渲染重复的组件结构,语法示例如下:

<view wx:for="{{array}}">
    索引是:{{index}}当前项是:{{item}}
</view>

2、wx:key的使用

?类似于Vue列表渲染中的:key,小程序在实现列表渲染时,也建议为渲染出来的列表项指定唯一的 key值,从而提高渲染的效率,示例代码如下:

//data数据
data{
    userList:[
    {id:1,name:'小明'},
    {id:2,name:'小红'},
    {id:3,name:'小蓝'},   
]
}
<view wx:for="{{userList}}" wx:key="id">{{item.name}}</view>

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:57:45  更:2022-07-03 10:58:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 16:52:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码