04 视图与逻辑

本文详细介绍了微信小程序中的页面导航方式,包括声明式和编程式的页面跳转,以及如何进行参数传递。同时,讲解了下拉刷新和上拉触底的配置与事件处理,包括样式配置、事件监听和节流控制。此外,还提到了自定义编译模式和小程序的生命周期函数,以及WXS(WeiXinScript)的使用,包括其基本语法和在页面中的应用。
摘要由CSDN通过智能技术生成

1 页面导航

2 页面导航的两种方式 

 

2.1 声明式导航

1 跳转到tabBar页面

 url 必须以‘/’开头,

要跳转tabBar 的地址必须指定open-type='switchTab'

 2 跳转到非tabBar 页面

3 后退导航

 2.2 编程式导航

1 导航到tabBar页面

 

 

2  导航到非tabBar页面

3 后退导航

 

 

3 导航传参

3.1 声明式导航传参

3.2 编程式导航传参

 3.3 在 onLoad 中接收导航参数

4 页面事件

4.1 下拉刷新

4.1.1 什么是下拉刷新
下拉刷新 是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而 重新加载页面数据 的行为。

4.1.2 开启下拉刷新

4.1.3配置下拉刷新窗口的样式

在全局或页面的 .json 配置文件中,通过 backgroundColor backgroundTextStyle 来配置下拉刷新窗口
的样式,其中:
backgroundColor 用来配置下拉刷新 窗口的背景颜色 ,仅支持16 进制的颜色值
backgroundTextStyle 用来配置下拉刷新 loading 的样式 ,仅支持 dark 和 light

4.1.4监听页面的下拉刷新事件

 4.1.5停止下拉刷新的效果

4.1.6什么是上拉触底

 上拉触底是移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为。

 用户有可能多次 来回拉动底部 下拉框, 请求还没有完成的话,又进行了一次下拉事  件,就不应该发第二次请求。我们应该进行节流的处理

也就是同一时间只发送一个请求,当上一个请求没有完成,是不允许发下一个请求的

4.1.7配置上拉触底距离

4.2 下拉触底案例

 

4.2.1步骤1 - 定义获取随机颜色的方法

 

4.2.2步骤2 - 在页面加载时获取初始数据

4.2.3步骤3 - 渲染 UI 结构并美化页面效果

 

4.2.4步骤4 - 上拉触底时获取随机颜色

 下拉底部的时候,再次触发方法: 每次调用方法 新旧数组拼接

4.2.5 步骤5 - 添加 loading 提示效果

 

4.2.6 步骤6 - 对上拉触底进行节流处理

① 在 data 中 定义 isloading 节流阀
false 表示当前没有进行任何数据请求
true 表示当前正在进行数据请求
② 在 getColors() 方法中 修改 isloading 节流阀的值
在刚调用 getColors 时将节流阀设置 true
在网络请求的 complete 回调函数中,将节流阀重置为 false
③ 在 onReachBottom 中 判断 节流阀的值,从而对数据请求进行节流控制
如果节流阀的值为 true,则阻止当前请求
如果节流阀的值为 false,则发起数据请求

4.3 自定义编译模式

重新编译,他会进入首页,而不是我们当前编辑的页面,非常麻烦

所以我们使用自定义编译模式

 删除自定义模式

5生命周期

5.1 什么是生命周期

5.2 生命周期的分类

5.3 什么是生命周期函数

5.4生命周期函数的分类

 5.4.1应用的生命周期函数

 

 模拟切前台和后台:

5.4.2页面的生命周期函数

 

在进入该页面修改标题调用 

6 wxs

6.1 什么是 wxs

WXS (WeiXin Script)是 小程序独有的一套脚本语言 ,结合 WXML,可以构建出页面的结构。

6.2 wxs 的应用场景

6.3 wxs 和 JavaScript 的关系*

 6.4 基本语法

 6.4.1. 内嵌 wxs 脚本

 

6.4.2定义外联的 wxs 脚本

 

6.4.3使用外联的 wxs 脚本

 

6.5 WXS 的特点

 

7 案例 -本地生活

7.1实现导航跳转并传参

1 创建商铺列表页面

2 修改 九宫格代码

 

 改成navigator, 添加url ,传递参数

查看参数是否传递过来:

 7.2 动态设置商铺列表页面的标题内容

刚一进来页面就调用 api方法,只能再onready方法中调用,只有他是页面初次渲染完成调用

1  再onload里边进行动态转存,供其他方法进行使用

 2 onready方法中 调用setNavigationBarTitle

 onReady: function () {
    wx.setNavigationBarTitle({
      title: this.data.query.title
    })
  },

7.3 创建商铺列表的编译模式

只要重新编译,就会进入商品列表页面(不会去首页了)

 7.4 列表的api接口

1 定义初始数据

2 调用接口

    /**
   * 页面的初始数据
   */
  data: {
    shopList: [],
    page: 1,
    pageSize: 10,
    total: 0,
    isloading: false
  },


  /**
   * 生命周期函数--监听页面加载
   */
 onLoad: function (options) {
    this.getShopList()
  },


getShopList(cb) {
    wx.request({
      url: `https://www.escook.cn/categories/${this.data.query.id}/shops`,
      method: 'GET',
      data: {
        _page: this.data.page,
        _limit: this.data.pageSize
      },
      success: (res) => {
        this.setData({
          shopList: [...this.data.shopList, ...res.data],
          total: res.header['X-Total-Count'] - 0
        })
      }
    })
  },

shopList 旧数据和新数据进行拼接

total: 字符串转数字

7.5 渲染商品列表的ui结构并美化样式

美化

1 flex

2 图片的下边有间距

 解决: 给图片添加display: block

 3 文字分散布局

4 添加边距

5 给每一个添加边框

6 给每一个添加外边距

7添加阴影 

 

7.6 展示loading提示效果

 

7.7 上拉触底时请求下一个数据

 页数+1 ,调用接口

7.8 对上拉触底事件进行节流控制

 

 频繁处理好多次,发现page一直变大,一直在调用接口

节流: 定义一个节流阀

7.9 分析数据加载的问题

一个80条,每次加载10条, 一共8次。 再往后加载 就么有数据了,加载没有意义

对数据进行判断: 当没有后续数据以后,不应该额外再调用接口

 

 

 代码:

 1.5秒后自动关闭

 

7.10 为商铺列表页面开启下拉刷新效果

模拟器 ,一松手, 会自动关闭下拉刷新效果

但是真机不会关闭,得调用一个关闭的方法

 7.11 现在下拉刷新的功能

下拉刷新从第一页开始重新加载

 

7.12 解决下拉窗口效果不会自动关闭的问题

获取数据以后,再调用关闭的方法

7.13 使用wxs处理手机号

 

1 建立文件

 

function splitPhone(str) {
  if(str.length !== 11) return str

  var arr = str.split('')

  arr.splice(3, 0, '-')
  arr.splice(8, 0, '-')

  return arr.join('')
}

module.exports = {
  splitPhone: splitPhone
}

2 使用


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值