一、数据绑定
1、定义数据
在页面对应的 .js(或 ts)文件中,把数据定义到 data 对象中即可:
2、Mustache 语法的格式(渲染数据)
把 data 中的数据绑定到页面中渲染,使用 Mustache 语法(双大括号)将变量名包起来即可。如图:
3、Mustache 语法的应用场景
Mustache 语法的主要应用场景:
- 绑定内容
- 绑定属性
- 运算(三元运算、算术运算等)
1、动态绑定内容
页面数据如图:
页面的结构如图:
以上演示就是数据的动态绑定,将定义的页面数据绑定到页面结构进行渲染。
2、动态绑定属性
页面数据如图:
页面的结构如图:
最后整体展示如图:
一定要注意语法格式!!!
3、三元运算
页面的数据如下:
页面的结构如下:
最后整体展示:
4、算术运算
页面数据如下:
页面的结构如下:
最后整体展示:
最后总结一下:数据的绑定,首先是在页面的 .js(或 .ts)文件的 page 中的 data 内定义数据,再在页面的 .WXML 文件中渲染数据。
二、事件绑定
事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。
1、 小程序中常用的事件:
类型 | 绑定方式 | 事件描述 |
tap | bindtap 或 bind:tap | 手指触摸后马上离开 |
input | bindinput 或 bind:input | 文本框的输入事件 |
change | bindchange 或 bing:change | 状态改变时触发 |
2、事件对象 event 的详细属性:
属性 | 类型 | 说明 |
type | String | 事件类型 |
timeStamp | Integer | 页面打开到触发事件所经过的毫秒数 |
target | Object | 触发事件的组件的一些属性值集合 |
currentTarget | Object | 当前组件的一些属性值集合 |
detail | Object | 额外的信息 |
touches | Array | 触摸事件,当前停留在屏幕中的触摸点信息的数组 |
changedTouches | Array | 触摸事件,当前变化的触摸点信息的数组 |
3、target 和 currentTarget 的区别:
target 是触发该事件的源头组件,而 currentTarget 则是当前事件所绑定的组件。举例如下:
4、 bandtap 的语法格式
在小程序中,不存在 HTML 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为。
1、通过 bindtap,可以为组件绑定 tap 触摸事件,语法如下:
2、在页面的 .ts(或 .js)文件中定义对应的事件处理函数,事件参数通过形参 event (一般简写成 e )来接收:
5、在事件处理函数中为 data 中的数据赋值
通过调用 this.setData(dataObject) 方法,可以给页面 data 中的数据重新赋值,示例如下:
下面看一下整体效果:
6、事件传参
小程序中的事件传参比较特殊,不能再绑定事件的同时为事件处理函数传递参数。例如,下面的代码不能正常工作:
因为小程序会把 bindtap 的属性值(即单引号内的所有内容),统一当作事件名称来处理,相当于要调用一个名称为 btnTapHandler(123) 的事件来处理函数,不会把括号里面的123当作参数传递。
1、小程序的正确传参方法:
可以为组件提供 data-* 自定义属性传参,其中 * 代表的是参数的名字,参数的值通过 Musatche 语法(双大括号)传递。实例如下:
最终:
- info 会被解析为参数的名字
- 数值 2 会被解析为参数的值
2、获取到具体参数的值
在事件处理函数中,通过 event.target.dataset.参数名 即可获取到具体参数的值,示例代码如下:
注意格式:event.target.dataset.参数名 其中 event 可以是缩写 e
7、bindinput 的语法格式
在小程序中,通过 input 事件来响应文本框的输入事件,语法格式如下:
1、通过 bindinput,可以为文本框绑定输入事件:
2、在页面的 .js 文件中定义事件处理函数:
最后看一下整体演示:
8、实现文本框和 data 之间的数据同步
1、实现步骤:
- 定义数据
- 渲染结构
- 美化样式
- 绑定 innput 事件处理函数
2、定义数据
3、渲染结构
4、美化样式
5、绑定 input 事件处理函数
最后看一下编译效果: