小程序~~2(wxml语法+生命周期+API)

目录

1.wxml语法

 声明和绑定数据{{}}

setData

setData修改数据

setData修改对象类型数据

setData修改数组类型数据

修改数据

删除数据

 简易双向数据绑定

列表渲染

条件渲染

2.生命周期

小程序更新机制

小程序的生命周期

应用生命周期

页面生命周期

3.小程序API

介绍

发起网络请求

界面交互-loading提示框

模态对话框和消息提示框

本地储存

同步API

异步API

路由与通信

上拉加载

下拉刷新

增强scroll-view


1.wxml语法

 声明和绑定数据{{}}

在{{}}中可以进行动态赋值、算术运算、三元运算和逻辑判断,但是不能使用.js文件中的方法如if条件判断、for循环或者是某个函数

算术运算    <view>{{id+1}}</view>

三元运算    <view>{{id === 1 ? "等于":"不等于"}}</view>

逻辑判断    <view>{{id === 1}}</view>

setData

setData修改数据

this.setData两个作用:更新数据,驱动视图(页面)更新

使用键值对的形式来更新数据,key:是需要更新的数据,value:是最新的值

setData修改对象类型数据

设置三个view组件,使用{{}}放置userinfo.name userinfo.age  userinfo.test三个变量,再用button绑定一个点击事件

在.js文件中,调用绑定事件,现在data{}方法中声明userinfo这个空列表,之后再绑定事件函数中通过this.setData({})来为对象赋值;

也可以现在data中userinfo的空列表中先声明好变量的初始值,之后再修改数据。有三种修改方法:

  • 可以直接通过this.setData({})来修改数据;
  • 当修改的变量较多,书写地址不方便,可以使用ES6提供的展开运算符,const userinfo={...this.data.userinfo},其中的...this.data.userinfo是在调用原先的数据,在下面的修改中就可以不用再写userinfo,修改之后再使用this.setData({})将新的值赋值给userinfo(当键和值一样时可以简写,只写一个)
  • 使用Object.assign()将多个对象合并为一个对象,const userinfo = Object.assign(this.data.userinfo,{name:'Jerry'},{age:12}),修改之后使用this.setData({})将新的值赋值给userinfo

修改和赋值的时候都将key写成数据路径的形式,如userinfo.name(a.b.c)

在删除数据时,有两种方法

  • 删除单个属性,直接delete this.data.数据地址名(就像是userinfo.name,是a.b.c的形式),之后调用this.setData({})方法将this.data.userinfo重新赋值给userinfo
  • 删除多个属性,使用rest剩余参数,const {age,test,...rest} = this.data.userinfo,此处将要删除的变量名写在...rest的前面,删除后将rest赋值给userinfo

setData修改数组类型数据

增加数据有三种方法

  • 使用push(),将新的数据推到原数组中,再通过this.setData({})方法赋值
  • 使用中间变量,用concat()函数来连接字符串,const newList = this.data.list.concat()
  • 使用中间变量,用数组来存储数据,const newList = [...this.data.list,4],在调用过原来的数据之后,将新的数据放在数组后面

            

修改数据

在list数组中只存放的是数据时,可直接通过索引值来修改数据;

如果list数组中使用了{{}}来存放数据,现在.wxml文件中更改要展示的数据,之后再在this.setData({})函数中修改即可,注意键名

删除数据

删除数组中的数据有两种方法

使用splice()函数,splice(1,1)表示删除索引为1开始的1个元素

使用filter()函数,可进行判断,filter(item => item !== 2) 将索引值不等于2的数据筛选出来

splice()函数

filter()函数

 简易双向数据绑定

在.wxml文件中,普通属性的绑定是单向的,即在页面上修改数据不会影响到调试器中显示出来的数据,但是在调试器中修改数据可以在页面上显示

为了实现双向数据绑定,可以在对应属性前面加上model前缀

注意:绑定的属性值只能是一个单一字段的绑定,不能掺杂汉字;另外,不能写data路径,也就是不支持数组和对象

列表渲染

列表渲染,即通过循环遍历一个数组或者对象,将其中的每个元素渲染到页面上

通过wx:for属性绑定一个数组或对象,既可以使用每一项数据重复渲染当前组件;如果渲染的是数组,item指的是数组中的每一项,index指的是下标(索引);如果渲染的是对象,item指的是对象属性的值,index指的是对象属性

在使用wx:for属性时,建议加上wx:key属性,它的值以两种形式提供;字符串(每一项固定的某个属性),代表需要遍历数组中item的某个属性,该属性的值需要是数组中唯一的字符串或者数字,且不能动态改变;*this关键字,代表在for循环中的item本身,当item本身是一个唯一的字符串或数字时使用

进阶用法:使用wx:for-item来修改默认的变量名, wx:for-index修改默认的下标

<block/>不是一个组件,仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性

条件渲染

条件渲染主要用来控制页面结构的展示和隐藏,有两种方式

使用wx:if 、wx:elif 、wx:else属性组;其中wx:elif 和 wx:else不能单独使用,必须和wx:if结合使用;这三个在使用的时候要连贯,中间不能被隔开

使用hidden属性,它主要是通过css中的display属性来控制页面结构的展示和隐藏

wx:if,当条件结果为true时将结构展示出来,否则结构不会展示;hidden,当条件为true时将结构隐藏,否则结构会展示出来

2.生命周期

小程序更新机制

onLaunch()更新版本

小程序的生命周期

应用生命周期

应用生命周期函数在app.js文件中定义,App()方法必须在app.js中调用,主要用来注册小程序,生命周期函数由onLaunch、onShow、onHide三个函数组成

onLaunch 小程序初始化;onShow 小程序启动或切前台;onHide 小程序切后台

冷启动,小程序销毁后,再次打开要重新经历下面的历程

热启动,关闭小程序后,再次打开只从onShow函数开始

所以,一次只经历一个onLaunch函数

页面生命周期

页面生命周期指的是小程序页面从 加载-运行-销毁 的整个过程

页面生命周期函数需要在Page()方法中进行定义,在该页面的js文件中定义

onLoad 监听页面加载;onShow 监听页面展示;onReady 监听初次渲染完成;onUnload 监听页面卸载;onHide 监听页面隐藏

在页面展现的过程中,onLoad和onReady只执行一次

有页面跳转的话,看open-type的类型,如果是保留原页面(就是能返回上一页),那么不调用onUnload函数,调用的是onHide函数;在页面从前台切到后台,调用的也是onHide函数;在页面从后台切到前台,调用的是onShow函数

还有两点:tabBar页面之间的转换,页面不会被销毁;在返回上一页,就是点击左上角的<,(此处指的是跳转页面,但是不声明open-type类型),页面会被销毁

3.小程序API

介绍

小程序提供的API几乎全部挂载在wx对象下,如wx.request()、wx.setStorage()等,wx对象实际上就是小程序的宿主环境微信所提供的全局对象

异步API,通常接受一个object类型的参数,例如wx.request({})

同步API,约定以Sync结尾,例如:wx.setStorageSync()

事件监听API,约定以on开头,例如wx.onAppHide()

发起网络请求

接口地址要先在开发者平台配置

跳过域名的配置

界面交互-loading提示框

wx.showLoading()显示提示框  wx.hideLoading()关闭提示框

显示提示框时,注意title里面的内容,太多的会隐藏起来;mask:true时,可以形成透明层,防止触摸穿透

不管数据请求成功还是失败,都要关闭提示框

模态对话框和消息提示框

wx.showModal() 模态对话框,询问是否删除商品,是否退出登录等

wx.showToast() 消息提示框,提示删除成功,退出成功等信息

在介绍异步API时,说如果Object参数没有success/fail/complete时默认返回Promise,需要自行封装

这里在调用函数前添加了async 并在调用wx.showModal()方法时,添加了const {confirm}来接收数据

下面根据得到的confirm值的true或者false,来提示相应的内容

本地储存

同步API

存储的过程中,第一个参数是key值,第二个参数是需要存储的数据;当存储的是对象数据类型时,不需要使用JAON.stringify 和 JSON.parse进行转换

获取和删除数据时,根据key值删除

清空时不需要任何参数

异步API

全部没有Sync后缀,并且是以({})的形式来存储数据,在接收数据时,可以定义data变量接收

路由与通信

与前面所学的按钮绑定跳转事件相似,只不过这里的方法都是wx.开头,并且其中一些方式是不能携带参数的,如wx.switchTab()

在跳转到的页面可以通过onLoad()函数来获取打印出数据

上拉加载

先在app.json文件中配置距离页面底部的距离:onReachBottomDistance

之后在页面的.js文件中定义onReachBottom事件监听用户上拉加载,利用数组最后一个数字加1,2,3来获得新的数组,进行拼接即可

还添加了数据加载的提示框

下拉刷新

在页面.js文件中定义onPullDownRefresh事件监听用户下拉刷新

在onPullDownRefresh(){}函数中主要分为两个部分,下拉刷新时重置数据,弹回loading框

增强scroll-view

在.wxml文件的scroll-view标签中添加以下属性

上拉加载属性

  • lower-threshold="100"     表示上拉触底的距离
  • bindscrolltolower="getMore"    绑定上拉加载函数
  • enable-back-to-top    表示是否回到顶部,默认值为true

下拉刷新属性

  • refresher-enabled  表示是否能刷新,默认值为true
  • refresher-default-style   上拉刷新的小圆点颜色
  • refresher-background    上拉刷新的背景颜色
  • bindrefresherrefresher   绑定上拉刷新的函数
  • refresher-triggered     是否弹回提示框,值为false时弹回

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值