×

支付宝小程序介绍

支付宝小程序 开发者入驻支付宝小程序 创建小程序支付宝小程序 开发准备支付宝小程序 提审、发布与修改

支付宝小程序 开放能力

支付宝小程序 获取会员信息支付宝小程序 接入支付支付宝小程序 芝麻信用评分(普惠版)支付宝卡包产品介绍alipay.system.oauth.token(换取授权访问令牌)蚂蚁金服支付宝开发文档——第三方应用授权支付宝小程序介绍 信用借还支付宝小程序 二维码支付宝小程序 安全检测支付宝小程序DEMO

支付宝小程序开发文档

蚂蚁支付宝小程序开发教程手册文档

支付宝小程序 框架

支付宝小程序框架 概述·overview支付宝小程序框架 App支付宝小程序框架 Page支付宝小程序框架 视图层·axml支付宝小程序框架 事件·events支付宝小程序框架 样式·acss支付宝小程序框架 兼容·compatibility

支付宝小程序 组件

支付宝小程序 视图容器

支付宝小程序组件 视图容器·View支付宝小程序组件 滑块视图容器·Swiper支付宝小程序组件 可滚动视图区域·Scroll View

支付宝小程序 基础内容

支付宝小程序组件 文本·Text支付宝小程序组件 图标·Icon支付宝小程序组件 进度条·Progress

支付宝小程序 表单组件

支付宝小程序表单组件 单选项目·Switch支付宝小程序表单组件 滑动选择器·Slider支付宝小程序表单组件 输入框·Textarea支付宝小程序表单组件 Label支付宝小程序表单组件 Radio支付宝小程序表单组件 输入框·Input支付宝小程序表单组件 嵌入页面的滚动选择器·Picker View支付宝小程序表单组件 多选项目·Checkbox支付宝小程序表单组件 表单·Form支付宝小程序表单组件 按钮·Button支付宝小程序表单组件 Picker

支付宝小程序 导航

支付宝小程序组件 页面链接·Navigator

支付宝小程序 媒体组件

支付宝小程序组件 图片·Image

支付宝小程序 画布

支付宝小程序组件 画布·Canvas

支付宝小程序 地图

支付宝小程序组件 地图·Map

支付宝小程序 开放组件

支付宝小程序 关注生活号组件 lifestyle支付宝小程序 云客服组件 Contact-button

支付宝小程序 API

支付宝小程序 界面

支付宝小程序API 导航栏支付宝小程序API TabBar支付宝小程序API 交互反馈支付宝小程序API 下拉刷新支付宝小程序API 联系人支付宝小程序API 选择城市支付宝小程序API 选择日期支付宝小程序API 动画·Animation支付宝小程序API 画布·canvas支付宝小程序API 地图支付宝小程序API 键盘支付宝小程序API 滚动支付宝小程序API 节点查询

支付宝小程序 开放接口

支付宝小程序API 用户授权支付宝小程序API 客户端获取会员信息支付宝小程序API 小程序唤起支付支付宝小程序API 小程序二维码支付宝小程序API 跳转支付宝卡包支付宝小程序API 芝麻认证支付宝小程序API 信用借还

支付宝小程序 多媒体

支付宝小程序API 图片·Image支付宝小程序API 缓存支付宝小程序API 文件支付宝小程序API 位置支付宝小程序API 网络

支付宝小程序API 设备

支付宝小程序API 获取基础库版本号支付宝小程序API canIUse支付宝小程序API 系统信息支付宝小程序API 网络状态支付宝小程序API 剪贴板支付宝小程序API 摇一摇支付宝小程序API 震动支付宝小程序API 拨打电话支付宝小程序API 获取服务器时间支付宝小程序API 用户截屏事件支付宝小程序API 屏幕亮度支付宝小程序API 扫码

支付宝小程序API 蓝牙

支付宝小程序蓝牙 快速接入支付宝小程序蓝牙 API列表支付宝小程序API 数据安全支付宝小程序API 分享支付宝小程序API 自定义分析

支付宝小程序 开发工具

支付宝小程序开发工具 概览支付宝小程序开发工具 编码支付宝小程序开发工具 调试支付宝小程序开发工具 上传支付宝小程序开发工具 体验版测试支付宝小程序开发工具 设置支付宝小程序开发工具 ESLint支付宝小程序开发工具 历史更新日志支付宝小程序开发工具 下载支付宝小程序 更新日志支付宝小程序 常见问题如何发布支付宝小程序?如何开发支付宝小程序?

支付宝小程序框架 Page


简介

Page代表应用的一个页面,负责页面展示和交互。每个页面对应一个子目录,一般有多少个页面,就有多少个子目录。它也是一个构造函数,用来生成页面实例。

页面初始化时,需要提供数据将作为页面的第一次渲染。

{{title}}
{{array[0].user}}
Page({
  data: {
    title: 'Alipay',
    array: [{user: 'li'}, {user: 'zhao'}]
  }
})

定义交互行为时,需要在页面脚本里面指定响应函数。

click me

上面模板定义用户点击时,调用handleTap方法。

Page({
  handleTap() {
    console.log('yo! view tap!')
  }
})

页面重新渲染,需要在页面脚本里面调用this.setData方法。

{{text}}

上面代码指定用户触摸按钮时,调用changeText方法。

Page({
  data: {
    text: 'init data',
  },
  changeText() {
    this.setData({
      text: 'changed data'
    })
  },
})

上面代码中,changeText方法里面调用this.setData方法,会导致页面的重新渲染。

Page()

Page() 接受一个 object 作为参数,该参数用来指定页面的初始数据、生命周期函数、事件处理函数等。

//index.js
Page({
  data: {
    title: "Alipay"
  },
  onLoad(query) {
    // 页面加载
  },
  onReady() {
    // 页面加载完成
  },
  onShow() {
    // 页面显示
  },
  onHide() {
    // 页面隐藏
  },
  onUnload() {
    // 页面被关闭
  },
  onTitleClick() {
    // 标题被点击
  },
  onPullDownRefresh() {
    // 页面被下拉
  },
  onReachBottom() {
    // 页面被拉到底部
  },
  onShareAppMessage() {
   // 返回自定义分享信息
  },
  viewTap() {
    // 事件处理
    this.setData({
      text: 'Set data for updat.'
    })
  },
  go() {
    // 带参数的跳转,从 page/index 的 onLoad 函数的 query 中读取 xx
    my.navigateTo('/page/index?xx=1')
  },
  customData: {
    hi: 'alipay'
  }
})

上面代码中,Page()方法的参数对象说明如下。

属性 类型 描述
data Object or Function 初始数据或返回初始化数据的函数
onTitleClick Function 点击标题触发
onOptionMenuClick Function 基础库 1.3.0+ 支持,点击格外导航栏图标触发
onPageScroll Function({scrollTop}) 页面滚动时触发
onLoad Function(query: Object) 页面加载时触发
onReady Function 页面初次渲染完成时触发
onShow Function 页面显示时触发
onHide Function 页面隐藏时触发
onUnload Function 页面卸载时触发
onPullDownRefresh Function 页面下拉时触发
onReachBottom Function 上拉触底时触发
onShareAppMessage Function 点击右上角分享时触发
其他 Any 开发者可以添加任意的函数或属性到 object 参数中,在页面的函数中可以用 this 来访问

(1)生命周期方法的说明

  • onLoad: 页面加载。一个页面只会调用一次,query 参数为 my.navigateTomy.redirectTo 中传递的 query 对象。
  • onShow: 页面显示。每次打开页面都会调用一次。
  • onReady: 页面初次渲染完成。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。对界面的设置,如my.setNavigationBarTitle请在onReady之后设置,详见生命周期。
  • onHide: 页面隐藏。当navigateTo或底部tab切换时调用。
  • onUnload: 页面卸载。当redirectTonavigateBack的时候调用。

(2)事件处理函数的说明

  • onPullDownRefresh: 下拉刷新。监听用户下拉刷新事件,需要在app.jsonwindow选项中开启pullRefresh,当处理完数据刷新后,my.stopPullDownRefresh可以停止当前页面的下拉刷新。
  • onShareAppMessage: 用户分享,详见分享

Page.prototype.setData()

setData函数用于将数据从逻辑层发送到视图层,同时改变对应的this.data的值。

注意:

  1. 直接修改this.data无效,无法改变页面的状态,还会造成数据不一致。
  2. 请尽量避免一次设置过多的数据。

setData接受一个对象作为参数。对象的键名key可以非常灵活,以数据路径的形式给出,如 array[2].messagea.b.c.d,并且不需要在this.data中预先定义。

下面是示例代码。

{{text}}

{{array[0].text}}

{{object.text}}

{{newField.text}}
Page({
  data: {
    text: 'test',
    array: [{text: 'a'}],
    object: {
      text: 'blue'
    }
  },
  changeTitle() {
    // 错误!不要直接去修改 data 里的数据
    // this.data.text = 'changed data'  

    // 正确
    this.setData({
      text: 'ha'
    })
  },
  changeArray() {
    // 可以直接使用数据路径来修改数据
    this.setData({
      'array[0].text':'b'
    })
  },
  changePlanetColor(){
    this.setData({
      'object.text': 'red'
    });
  },
  addNewKey() {
    this.setData({
      'newField.text': 'c'
    })
  }
})

getCurrentPages()

getCurrentPages()函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。下面代码可以用于检测当前页面栈是否具有5层页面深度。

if(getCurrentPages().length === 5) {
  my.redirectTo('/xx');
} else {
  my.navigateTo('/xx');
}

注意:不要尝试修改页面栈,会导致路由以及页面状态错误。

框架以栈的形式维护了当前的所有页面。 当发生路由切换的时候,页面栈的表现如下:

路由方式 页面栈表现
初始化 新页面入栈
打开新页面 新页面入栈
页面重定向 当前页面出栈,新页面入栈
页面返回 当前页面出栈
Tab 切换 页面全部出栈,只留下新的 Tab 页面

page.json

每一个页面也可以使用[page名].json文件来对本页面的窗口表现进行配置。

页面的配置比app.json全局配置简单得多,只能设置window相关的配置项,所以无需写window这个键。注意,页面配置会覆盖app.jsonwindow属性中的配置项。

page 样式

每个页面中的根元素为 page,需要设置高度或者背景色时,可以利用这个元素。

page {
  background-color: #fff;
}

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)