目录

一、数据处理

1.字符数据的绑定

2.图片数据的动态绑定

3.数据运算

4.总代码与测试截图

二、事件处理

1.概念

2.事件绑定

(1)bindtap

(2)bindinput

3.事件传参

(1)小程序中的事件传参比较特殊,即不能在绑定事件的同时进行参数的传递。

(2)获取参数值

4.数据赋值与同步

(1)数据赋值

(2)文本框和data之间的数据同步

三、条件渲染

(1)根据指定条件来选择性的渲染某个页面

(2)根据指定条件控制多个组件的展示与隐藏

四、列表循环渲染

(1)wx:for循环渲染

(2)wx:key提高循环渲染效率


一、数据处理

原理:在.js文件中的data:{ }页面数据块中进行变量的声明,然后在.wxml文件中使用Mustache语法格式,即{{ }}进行数据的使用。另外{{ }}可以支持数据的运算包括三元运算以及图片数据的动态绑定。

1.字符数据的绑定

声明数据

data: {info:'hello word!',//定义变量info},

使用数据

<view>{{info}}</view>

2.图片数据的动态绑定

声明数据

 //变量值存放的是图片的地址
data: {
imageSrc:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2F4k%2Fs%2F01%2F210924134Q43357-0-lp.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1659682783&t=228a191082446f27834a00087ebf252b',},

使用数据

<image src="{{imageSrc}}" mode="widthFix"></image>

3.数据运算

  • 以生成随机数并用三目运算符判断值的范围为例

声明数据

data: {randomNumber:(Math.random()*10).toFixed(2),//生成10以内的随机生成数,并保留两位小数randomNumber2:Math.random().toFixed(2),//将0~1之间的随机数保留两位小数},

使用数据

<view><view><text class="container1">随机数1为:{{randomNumber}}</text><!-- 使用Mustache即{{}}进行三元运算 -->{{randomNumber >= 5 ? '随机数大于或等于5' : '随机数小于5'}}</view><view><text class="container2">随机数2为:{{randomNumber2*100}}</text>{{randomNumber >= 50 ? '随机数大于或等于50' : '随机数小于50'}}</view>
</view>

4.总代码与测试截图

.js文件(仅展示页面数据data部分)

 /*** 页面的初始数据*/// 数据绑定 data: {info:'hello word!',//定义变量infoimageSrc:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2F4k%2Fs%2F01%2F210924134Q43357-0-lp.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1659682783&t=228a191082446f27834a00087ebf252b',randomNumber:(Math.random()*10).toFixed(2),//生成10以内的随机生成数randomNumber2:Math.random().toFixed(2),//将随机数保留两位小数},

.wxml文件

<!-- 使用Mustache语法调用.js文件中data中所声明的变量info,将其渲染到页面上 -->
<!-- 字符数据的绑定 -->
<view>{{info}}</view>
<!-- 图片数据的动态绑定 -->
<image src="{{imageSrc}}" mode="widthFix"></image><view><view><text class="container1">随机数1为:{{randomNumber}}</text><!-- 使用Mustache即{{}}进行三元运算 -->{{randomNumber >= 5 ? '随机数大于或等于5' : '随机数小于5'}}</view><view><text class="container2">随机数2为:{{randomNumber2*100}}</text>{{randomNumber2*100 >= 50 ? '随机数大于或等于50' : '随机数小于50'}}</view>
</view>

.wxss文件

/* pages/databind/dayabind.wxss */
.container1{background-color: lightgreen;
}.container2{background-color:lightpink;
}

测试截图

获取图片地址

(也可以绑定根目录下image文件夹里面的图片,给出路径即可)


二、事件处理

1.概念

  • 事件是渲染层(.wxml)到逻辑层(.js)的通讯方式。
  • 通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务处理

常用的事件:

当事件回调函数被触发时,会接收到一个事件对象event,它的详细属性如下:

另外,target与currentTarget的区别:

2.事件绑定

(1)bindtap

  • 在小程序中,没有HTML中的onclick鼠标点击事件,而是通过tap事件来响应用户的触摸行为

.wxml代码

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

.js代码

Page({// 触摸事件的处理函数btntap(event){console.log("hello world!");console.log(event);},
})

测试截图

当点击按钮,则会触发按钮事件处理函数,接收到事件对象后,在调试器输出打印一个hello world!和事件源组件的属性集合··

(2)bindinput

  • 在小程序中,通过input事件来响应文本框的输入事件
  • 通过bindinput来为文本框绑定事件

.wxml

<input bindinput="handleInput"></input> 

.js

Page({//文本框输入事件响应handleInput(e){//打印输出文本框内最新的值console.log(e.detail.value)},
})

3.事件传参

(1)小程序中的事件传参比较特殊,即不能在绑定事件的同时进行参数的传递。

例如如下代码,本想在绑定事件将参数123传递过去,但是这样会被小程序编译器当做统一事件名称来处理,相当于调用一个名称为btntap(123)的事件处理函数,而不是传递参数123

错误代码

<button type="primary" bindtap="btntap(123)">事件传参</button>

正确代码

<button type="primary" bindtap="btntap" data-info="{{123}}">事件传参</button>

可以为组件提供data-*自定义属性传参,其中*表示在data结点中定义的参数变量名字

(2)获取参数值

通过调用event.target.dataset.*来获取,*为参数变量名称

.wxml

<button type="primary" bindtap="btntap" data-info="{{2}}">按钮</button>

.js

// 触摸事件的处理函数btntap(event){console.log("hello world!");//在原来值的基础上加上传递进来的参数值count:this.data.count+event.target.dataset.info})console.log(event);},

4.数据赋值与同步

(1)数据赋值

  • 通过调用this.setData(dataObject)方法,可以给页面data中的数据重新赋值

页面结构不变,.js文件中代码为

Page({/*** 页面的初始数据*/data: {count:0},// 触摸事件的处理函数btntap(event){console.log("hello world!");this.setData({count:this.data.count+1})console.log(this.data.count);},
})

可以看到每点击一次按钮,count值加1

(2)文本框和data之间的数据同步

原理:先获取文本框内输入的最新值,再使用this.setData方法将数据重新赋值

.wxml

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

.js

Page({data: {  msg:'你好'},//文本框输入事件响应handleInput(e){//更新数据,实现数与文本框内输入一致this.setData({msg:e.detail.value})//打印输出文本框内最新的值console.log(this.data.msg)},})

.wxss

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

测试

可见在文本框内每输入一个字符都将同步到data中的参数msg中,这样实现了数据的同步


三、条件渲染

(1)根据指定条件来选择性的渲染某个页面

例如下面的代码,type为js文件data节点下的变量值为2,根据type的值来选择在页面上渲染的内容

(条件判断是3个等于号===,这一点要注意)

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

另外,也可以使用hidden来实现相同的功能

<view hidden="{{type===1}}">男</view>
<view hidden="{{type===2}}">女</view>
<view hidden="{{type===3}}">保密</view>

使用hidden与wx:if的区别:

  • wx:if以动态创建和移除元素的方式,控制元素的展示与隐藏
  • hidden以切换样式的方式(display:none/block;)来控制元素的显示与隐藏
  • 当需要频繁切换时,建议使用hidden
  • 当控制条件较多,建议使用wx:if

(2)根据指定条件控制多个组件的展示与隐藏

需要使用<bolck></block>标签将多个组件包装起来,并在<block>标签上使用wx:if控制属性

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

<block wx:if="{{type===2}}"><view>view1</view><view>view2</view><button type="primary">点我</button>
</block>

四、列表循环渲染

(1)wx:for循环渲染

数组内容

  arr2:['华为','小米','苹果']

渲染

<view wx:for="{{arr2}}">下标:{{index}} ,名字:{{item}}
</view>

index为数组默认的下标,item为数组默认的每一项,当数组不是一维数组时,item项指代里面的每一个对象,打印的话就要使用item.XX来进行打印输出,而只打印 item 会发现是个Object对象

数组内容

arr:[{id:0,name:'华为'},{id:1,name:'小米'},{id:2,name:'苹果'}]

渲染

<view wx:for="{{arr}}">下标:{{item.id}} ,名字:{{item.name}}
</view>

(2)wx:key提高循环渲染效率

<view wx:for="{{arr}} wx:key="id">下标:{{item.id}} ,名字:{{item.name}}
</view>

不妨点个赞再走哦~

微信小程序开发之WXML模板语法相关推荐

  1. 微信小程序开发之WXML:数据绑定

    WXML语言最终会被转译为宿主端对应的语言,所以WXML语言中使用的标签一定是小程序定义的标签,不能使用自定义的标签,这样才能保持页面的正确转译.(这是对上一篇标签的补充) WXML具有数据绑定.列表 ...

  2. 微信小程序2(WXML模板语法)

    WXML模板语法-数据绑定 数据绑定的基本原则 在data中定义数据 在WXML中使用数据 在data中定义数据 在页面对应的.js文件中,把数据定义到data对象中即可: Page({data: { ...

  3. 微信小程序开发之WXSS模板样式与WXS脚本语言

    目录 一.WXSS (1)rpx尺寸单位 (2)样式导入 (3)全局样式与局部样式 (4)常用样式 二.WXS (1)概念 (2)应用场景 (3)WXS与JavaScript的关系 (4)基本用法 内 ...

  4. 微信小程序中的WXML模板语法

    目录 一.数据绑定 1. 数据绑定的基本原则 2. 在 data 中定义页面的数据 3. Mustache 语法的格式 ​4. Mustache 语法的应用场景 5. 动态绑定内容 6. 动态绑定属性 ...

  5. 微信小程序开发之wxss中的那些事(一)

    微信小程序开发之wxss中的那些事 微信小程序开发中,页面的布局怎么整? 啥是WXSS? 基本语法 什么是rpx 什么是 flex 微信小程序开发中,页面的布局怎么整? 各位道友请留步,如果你是新手, ...

  6. 微信小程序开发之SVG的使用

    因为工作的原因,最近开始接触并且了解微信小程序.太久没有写或者看过前端相关的代码,加上小程序本身的bug也比较多,中间发现坑还是不少,后面逐渐整理总结一下.这一篇先总结一下svg在小程序中的使用. S ...

  7. 微信小程序开发之scroll-view上拉加载数据实现

    微信小程序开发之scroll-view上拉加载数据实现 一.开发思路 1.使用小程序的scroll-view组件中提供了一个bindscrolltolower属性监听组件的滑动到了底部 https:/ ...

  8. 微信小程序开发之formId使用(模板消息)

    基于微信小程序的模板消息 下发条件:用户本人在微信体系内与页面有交互行为后触发 1. 使用说明 1.1 获取模板id 登录https://mp.weixin.qq.com获取模板,如果没有合适的模板, ...

  9. 微信小程序开发之mpVue

    1 mpVue是什么 1.1 简介 美团工程师推出的基于Vue.js封装的用于开发小程序的框架 融合了原生小程序和Vue.js的特点 可完全组件化开发 1.2 特点 组件化开发 完成的Vue.js开发 ...

最新文章

  1. makefile文件编写教程
  2. 天猫精灵怎么和台式计算机链接,天猫精灵怎么连接电脑
  3. Android开源库介绍:AndLinker-Android 上的 IPC 库
  4. ESXi主机遗忘密码重置密码
  5. 【机器视觉】 deserialize_measure算子
  6. .Net中堆栈和堆的区别
  7. Spring Boot 2.x 启动全过程源码分析(上)入口类剖析
  8. redis映射的概念_Redis存储总是心里没底?你大概漏了这些数据结构原理
  9. 1.Kubernetes 简介
  10. tensorflow学习笔记(1)如何高效地学习TensorFlow(附链接)
  11. matlab画图命令plot,matlab画图命令plot
  12. Ueditor word图片转存按钮灰色无法激活
  13. PSpice应用B-4
  14. 证券公司信息化4_最核心的IT系统是什么?柜台系统的两个主要功能?一个交易过程是怎样的?
  15. gwt 测试_GWT应用程序的单元和集成测试
  16. 《遥远的救世主》遵守客观规律(七)——文化属性
  17. B 站,真香 ! ! !
  18. 超搞笑,超拽的句子...
  19. 程序员如何找对象(1)
  20. Eclipse里看到project 存在向上或者向下的箭头

热门文章

  1. spring mvc 过滤器
  2. 20210519 使用jstack命令排查线程死锁问题
  3. Baklib客户故事:快递助手ERP
  4. QSS编辑器QssEditor之一:简介
  5. 网站图标如何设置详细过程
  6. python实现简单进度条_简单实现python进度条脚本
  7. python代码实现决策树分类
  8. 如何设计一款软件的一些感想
  9. CentOS下载及安装
  10. USB产品序列号获取方法