微信小程序学习笔记二 数据绑定 + 事件绑定
微信小程序学习笔记二
1. 小程序特点概述
- 没有
DOM - 组件化开发: 具备特定功能效果的代码集合
- 体积小, 单个压缩包体积不能大于
2M, 否则无法上线 - 小程序的四个重要的文件
*js
*.wxml ---> view 结构 ---> html
*wxss ---> view样式 ---> css
*.json --->view 数据 ---> json文件 小程序适配方案: rpx (responsive pixel 响应式像素单位)
小程序适配单位px
规定任何屏幕下宽度为750px
小程序会根据屏幕的宽度不同自动计算rpx值的大小
Iphone6下 :1rpx = 1物理像素 = 0.5px

2. wxml语法
2.1 数据绑定
2.1.1 初始化数据
页面.js的data选项中定义初始化数据
// pages/index/index.js
Page({
/**
* 页面的初始数据
*/
data: {
message:"hello world"
},
})
在调试器中的 AppData中可以查看当前文件的数据

2.1.2 使用数据
- 模板结构中使用双大括号(插值表达式)
{{mssage}} 注意事项: 小程序中为单项数据流 model ---> view

点开模拟器就可以看到页面解析后的样子了

2.1.3 修改数据
this.setData( { DATA_NAME: "NEW_VALUE"}, callback)- 特点:
2.1 同步修改:this.data值被同步修改
2.2 异步更新: 异步将setData函数用于将数据从逻辑层发送到视图层(异步)
// pages/index/index.js
Page({
/**
* 页面的初始数据
*/
data: {
message:"hello world"
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log('页面加载完成');
// 修改message的状态,语法: this.setData
console.log(this); // this 代表当前页面的实例对象
this.setData({message:'new Hello World'},function () {
console.log('数据更新完成')
})
}
})


- 在上面代码中我们知道了,
setData修改数据的操作, 在自身所带的钩子函数中是同步的, 下面我们来测试一下在非自身的钩子函数中修改数据是否同步 - 代码如下:
onLoad: function (options) {
// 这里我们定义了一个定时器, 延时两秒执行, 运行一下看在模拟器中看效果
setTimeout(() => {
this.setData({ message: 'new Hello World' }, function () {
console.log('数据更新完成')
})
}, 2000);
},

由此我们可以得出, 小程序的数据修改,在非自身的钩子函数中也是同步的
2.2 事件绑定
2.2.1 事件分类
事件分为冒泡事件和非冒泡事件:
- 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
- 非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。
- 非冒泡事件:表单事件和自定义事件通常是非冒泡事件
事件列表
| 类型 | 触发条件 | 最低版本 |
|---|---|---|
touchstart |
手指触摸动作开始 | - |
touchmove |
手指触摸后移动 | - |
touchcncel |
手指触摸动作被打断,如来电提醒,弹窗等 | - |
touchend |
手指触摸动作结束 | - |
tap |
手指触摸后马上离开 | - |
longpress |
手指触摸后,超过350ms再离开, 如果指定了事件回调函数并触发了这个事件, tap事件将不被触发 |
1.5.0 |
longtap |
手指触摸后, 超过350ms再离开 (推荐使用longpress事件代替) |
- |
transitionend |
会在 WXSS transition或wx.createAnimation动画结束后触发 |
- |
animationstart |
会在一个WXSS animation动画开始时触发 |
- |
animationiteration |
会在一个WXSS animation一次迭代结束时触发 |
|
animationend |
会在一个WXSS animation动画完成时触发 |
- |
touchforcechange |
在支持 3D Touch的iPhone设备, 重按时会触发 |
1.9.90 |
2.2.2 绑定事件
bind绑定: 事件绑定不会阻止冒泡事件向上冒泡
演示: 分别在index.wxml和index.js定义以下代码
<view class="goStudy" bindtap="clickParent">
<text catchtap="bindtap">{{message}}</text>
</view>
clickParent() {
console.log('clickParent()');
},
clickChild() {
console.log('clickChild()');
},
点击
text标签之后我们查看调试器中信息, 可以看到外层的父元素的tap事件也被触发了

catch绑定: 事件绑定可以阻止冒泡事件向上冒泡演示: 我们将
index.wxml代码修改如下
<view class="goStudy" bindtap="clickParent">
<text catchtap="bindtap">{{message}}</text>
</view>
点击
text标签之后我们查看调试器中信息

可以看到只打印了一个
clickChild(), 说明我们的默认冒泡事件被阻止了
2.2.3 向事件对象传参
- 在小程序开发的时候,有时候需要在点击事件触发之后拿到一个参数做为使用,小程序不像 Vue 可以直接点击事件中放参数,而小程序它只能通过自定义属性进行绑定参数使用。
- 语法:
data-KEY=VALUE
1.1 在index.wxml中这样写
<text catchtap="clickChild" data-msg="传递的hello world">{{message}}</text>
- 获取:
event.target.dataset.key || event.currentTarget.dataset.key
clickChild(e) {
console.log('clickChild()');
console.log(e.currentTarget.dataset.msg);
let newMsg = e.currentTarget.dataset.msg;
this.setData({message:newMsg});
},

Event.target和event.currenTarget的区别
3.1Event.target是触发事件的对象, 但不一定是绑定事件的对象, 如: 事件委托, 冒泡
3.2currentTarget触发事件的对象一定是绑定事件的对象, 没有事件委托
微信小程序学习笔记二 数据绑定 + 事件绑定的更多相关文章
- 微信小程序学习笔记二 列表渲染 + 条件渲染
1. 列表渲染 1.1 wx:for 在组件上使用wx:for控制属性绑定一个数组, 即可使用数组中各项的数据重复渲染该组件 默认数组的当前项的下标变量名默认为 index, 数组当前项的变量名默认为 ...
- 【微信小程序学习笔记】入门与了解
[微信小程序学习笔记(一)] IDE 下载安装 下载地址 官方工具:https://mp.weixin.qq.com/debug/w … tml?t=1476434678461 下载可执行文件后,可按 ...
- 微信小程序学习笔记一 小程序介绍 & 前置知识
微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...
- 微信小程序学习笔记(二)--框架-全局及页面配置
描述和功能 框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑. 响应的数 ...
- 微信小程序学习笔记(一)--创建微信小程序
一.创建小程序 1.申请帐号.安装及创建小程序,请参照官方文档里面的操作 https://developers.weixin.qq.com/miniprogram/dev/. 小程序在创建的时候会要求 ...
- 微信小程序学习笔记(阶段一)
一阶段学习过程: (一)看官方文档的简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/ (二)看小码哥视频:https://chuanke.baidu.co ...
- 微信小程序学习笔记(3)--------框架之配置
我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. app.json 配置项列表 属性 类型 必填 描述 pages Stri ...
- 微信小程序学习笔记以及VUE比较
之前只是注册了一下微信小程序AppID,随便玩了玩HelloWorld!(项目起手式),但是最近看微信小程序/小游戏,崛起之势不可阻挡.小程序我来了!(果然,一入前端深似海啊啊啊啊啊~) 编辑器: S ...
- 微信小程序学习笔记1--小程序的代码构成
最近打算学习一下微信小程序,看了微信公众平台的文档感觉还比较简单,就从这个方向重新找回学习的状态吧: 1.先了解一下小程序的代码构成: 创建项目后会看到四种后缀的文件: .json 后缀的 JSON ...
随机推荐
- 从源码构建Vim
从源码构建Vim 引言 事情是介样滴,因为我是个Vim 重度使用者了差不多.. 但在大部分系统上能安装到的或者自带的都是比较老的版本,可能是7.x 之类的.也或者是你需要使用到Vim 的某些特性或者功 ...
- vue(24)网络请求模块axios使用
什么是axios Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 主要的作用:axios主要是用于向后台发起请求的,还有在请求中做更多是可控功能. a ...
- 2个Double字符串进行
public static int compare(double d1, double d2) { if (d1 < d2) return -1; // Neither val is NaN, ...
- 还不了解一下 Java 8 Predicate 函数接口
同学你好,这里有一份你的未读代码,等你查收. 这篇文章属于 Java 8 教程(LTS)系列教程,点击阅读更多相关文章. Predicate 函数接口同之前介绍的 Function 接口一样,是一个函 ...
- 关于vue3简单状态管理约定引发的思考
官方文档的代码是这样的 export const store = { debug: true, state: reactive({ message: 'Hello!' }), setMessageAc ...
- 记录21.07.23 —— Vue.js基础(二)
Vue基础(二) 过滤器 过滤器作用 全局过滤器 输出结果 私有过滤器 输出结果 把其中一个做点修改 错误信息 自定义指令 全局自定义指令 私有自定义指令 钩子函数 注意:fond-weight是粗细 ...
- 华为eNSP基础入门-配置SSH远程登录
eNSP 华为模拟器ensp (Enterprise Network Simulation Platform) 是华为官方推出的一款强大的图形化网络仿真工具平台,主要对企业网路由器.交换机.WLAN等 ...
- 那些 22 岁毕业做Android开发的人,他们 50 岁左右时的人生轨迹是怎样的?
本人今年35了,已经干了14年程序员,是14年不是13年,因为我是专科毕业. 一直就是普普通通的程序员,特别纯的码农,从没做过管理岗位,并且很可能以后也是如此. 现在已经上有老下有小. 曾经在某著名互 ...
- 90%的开发者都不知道的UI本质原理和优化方式
前言 很多开发者在工作中一直和UI打交道,所以认为UI非常的简单! 事实上对于90%的开发者来说,不知道UI的本质原理. 虽然在开发中,我们在接到产品的UI需求之后,可以走捷径照抄大型APP代码,但是 ...
- 干了快3年Android了,感觉自己的职业生涯已经快凉了
背景 首先我是个菜鸡,工资也低的一笔. 刚毕业时候在一家国企上班干 app 开发,干了快两年的时候,跳槽到了一家伪大厂干安全.投了不少简历都没有回音,只有这加伪大厂要我就来了.当时说好了会接触一些底层 ...