本章节了解小程序的一些基础组件和基本的事件处理以及小程序实现数据双向绑定
学习和开发小程序我们可以借助微信官方提供的开发文档,文档中提供了框架,组件和各种API满足我们的开发需求,本文介绍的只是一些基础的内容
2、image是图片标签,默认尺寸是320*240,可通过css或设置mode属性来修改尺寸。
mode属性:
aspectFit:缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来
aspectFit:缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来
widthFix:缩放模式,宽度不变,高度自动变化,保持原图宽高比不变
heightFix:缩放模式,高度不变,宽度自动变化,保持原图宽高比不变
(参考官方文档)
事件的第一个阶段是捕获阶段。事件从文档的根节点流向目标对象节点。途中经过各个层次的DOM节点,并在各节点上触发捕获事件,直到到达事件的目标节点。捕获阶段的主要任务是建立传播路径,在冒泡阶段,事件会通过这个路径回溯到文档跟节点。
当事件到达目标节点的,事件就进入了目标阶段。事件在目标节点上被触发,然后会逆向回流,直到传播至最外层的文档节点。
冒泡事件就是点击子节点,会向上触发父节点
举个例子
wxml页面结构:一个父盒子包着子盒子的结构
<view class="parent" bindtap="parent">
<view class="child" bindtap="child"></view>
</view>
js文件:当触发子盒子的事件,会先执行子盒子的事件处理函数,接着会执行父盒子的事件处理函数
parent () {
console.log('父盒子')
},
child () {
console.log('子盒子')
},
事件处理函数的执行结果
如上图,使用bindtap绑定事件会有冒泡事件,如果不想有冒泡事件产生,可以使用catchtap来绑定事件,catch 会阻止事件向上冒泡,举个例子:如下图
wxml代码:
<view class="parent" bindtap="parent">
<view class="child" catchtap="child"></view>
</view>
js代码:
parent () {
console.log('父盒子')
},
child () {
console.log('子盒子')
},
事件处理函数执行结果:
<button bindtap="bindViewTap"></button>
js文件声明事件处理函数
bindViewTap(){
console.log('点击事件');
},
事件对象用于描述所产生的事件。调用事件处理程序时,JS会把事件对象作为参数传给事件处理程序。事件对象提供了有关事件的详细信息,因而可以在事件处理程序中通过事件对象获取有关事件的相关信息
举个例子
wxml页面:
<button type="primary" bindtap="getEvent">事件对象</button>
js文件:
getEvent(e){
console.log(e);
},
点击按钮就会触发bindtap绑定的事件,这样也会执行js文件中的getEvent事件处理函数,在事件处理函数中传入参数e就代表事件对象,下面打印的 e 就是事件对象的信息
在原生小程序开发中,数据流是单向的,无法双向绑定,但是要实现双向绑定的功能还是蛮简单的!
举个例子:
内容实现数据的双向绑定:小程序中的首先是需要在js文件中data里面定义数据,在wxml文件中在需要使用数据的标签内使用{{}}进行动态插入
如图:
wxml文件
<view>数据绑定{{text}}</view>
js文件
page({
data:{
text:'绑定123'
}
})
页面展示
如果是想实现属性的双向绑定,也是如此,在js文件中定义,在wxml页面中在需要使用数据的属性内使用{{}}来进行动态插入
wxml文件
<image src="{{imageSrc}}"></image>
js文件
page({
data:{
imageSrc:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg3.doubanio.com%2Fview%2Fgroup_topic%2Fl%2Fpublic%2Fp410377270.jpg&refer=http%3A%2F%2Fimg3.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1652347697&t=6c4dc166614abb74776d2ef7dbb58ee5'
}
})
以上只是实现了数据的绑定,并不是双向绑定,我们还需要在数据变化时视图展示的内容也跟着变化,那怎么让数据变化?小程序中更改数据时使用code this.setData()
这个方法。
举个例子
在js文件中使用code this.setData()
修改数据
onLoad () {
this.setData({
text:'修改数据内容'
})
console.log(this.data.text);
}
页面展示
使用方法就是code this.setData()
({变量:更改后的值}
更改完后可以看一下在data中定义的变量现在的值,获取data中的变量的方法是:this.data.变量名 (this.setData()和this.data.变量名的this指的是Page创建的页面对象,指的是页面本身)
个人见解,有问题可留言。。。