Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Page(Object object)

Page() 用来注册一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。

参数

Object object

属性类型默认值必填说明最低版本
dataObject否页面初始化数据
optionsObject否页面的组件选项,同 Component 构造器 中的 options
behaviors[String]否代码复用机制,同 Component 构造器 中的 behaviors
onLoadObject否页面加载时触发
onShowObject否页面显示/切入前台时触发
onReadyObject否页面初次渲染完成时触发
onHideObject否页面隐藏/切入后台时触发
onBeforeUnloadObject否页面销毁前触发
onUnloadObject否页面销毁时触发
onPullDownRefreshObject否页面下拉刷新事件
onReachBottomObject否页面上拉触底事件
onPageScrollObject否页面滚动事件
onResizeObject否页面尺寸改变时触发
onTabItemTapObject否当前是 tab 页面时,点击 tab 时触发
其他Any否开发者可自由添加任意的 Function 或数据到 Object 参数中,用this 可访问 

Tips: -更多方法参考 Component, 具体使用时也会详细说明。

示例代码:

Page({
  data: {
    userName: ""
  },
  onLoad: function(e) {
    this.getName();
  },
  onReady: function() {

  },
  onShow: function() {

  },
  onHide: function() {

  },
  onUnload: function() {

  },
  onPullDownRefresh: function() {

  },
  onReachBottom: function() {

  },
  onShareAppMessage: function () {

  },
  onPageScroll: function() {

  },
  onTabItemTap(item) {
    console.log("当前点击的是:",JSON.stringify(item))

  },
  getName: function() {
    this.setData({
      userName:"cortana"
    })
  },
  customData: {
    dName: 'cortana'
  }
})

data

页面初始化时的数据。 data 中的数据必须是可以转成JSON的类型:字符串,数字,布尔值,对象,数组。 视图层可以通过 MCML 对数据进行绑定。

示例代码:

<view>{{text}}</view>
Page({
  
  data: {
    text: 'Hello MoreCross'
  }
})

生命周期回调函数

onLoad(Object object)

应用初始化完成时触发, 全局只触发一次。

参数

名称类型说明最低版本
queryObject打开当前页面路径中的参数 

onShow()

页面显示/切入前台时触发。

onReady

页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备完成,可以和视图层进行交互。

onHide()

页面隐藏/切入后台时触发。

onBeforeUnload()

页面销毁前触发。与 mc.disablePagePressBack() 配合使用。

参数

名称类型说明最低版本
cancelBooleantrue 表示页面被禁止返回(执行 mc.disablePagePressBack 后,手势或点击导航栏返回时为true,api 方式返回页面为 false) 

onUnload()

页面销毁时触发。

onPullDownRefresh()

页面下拉刷新事件。

  • 需要在app.json的 window 选项中或 页面配置中开启 enablePullDownRefresh 。
  • 可以通过 mc.startPullDownRefresh 触发下拉刷新,调用后触发下拉刷,效果与用户手动下拉刷新一致。
  • 当处理完数据刷新后,可通过 mc.stopPullDownRefresh 停止当前页面的下拉刷新。

onReachBottom()

页面上拉触底事件。

  • 可在app.json的 window 选项中或 页面配置 中设置 onReachBottomDistance 触发距离 。

onPageScroll(Object object)

页面滚动时触发。

参数

名称类型说明最低版本
scrollTopNumber页面在垂直方向已滚动的距离(单位px) 

onResize()

页面尺寸改变时触发(如屏幕旋转)。

onTabItemTap(Object object)

当前是 tab 页面时,点击 tab 时触发。

参数

名称类型说明最低版本
indexNumber被点击tabItem的索引号,从0开始
pagePathString被点击tabItem的页面路径
textString被点击tabItem的按钮文字 

#页面对象函数

Page.route

到当前页面的路径,类型为String。 示例代码:

Page({
  onShow: function() {
    console.log(this.route)
  }
})

Page.route

Page.prototype.setData(Object data, Function callback) setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。

名称类型默认值必填说明最低版本
dataObject是这次要改变的数据
callbackFunction否setData引起的界面更新渲染完毕后的回调函数 

Object 以 key: value 的形式表示,将 this.data 中的 key 对应的值改变成 value。

注意:

  1. 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。
  2. 仅支持设置可 JSON 化的数据。
  3. 单次设置的数据量不宜过大,请尽量避免一次设置过多的数据。
  4. 请不要把 data 中任何一项的 value 设为 undefined。

示例代码:

  <!--index.mcml-->
  <view>{{message}}</view>
  <button bindtap="changeMessage"> 修改消息值 </button>

//index.js
Page({
  data: {
    title: '我是title',
    num: 0,
    array: [{name: 'cortana'}],
    object: {
      text: 'init data'
    }
  },
  changeText: function() {
    this.setData({
      title: '新标题'
    })
  },
  changeNum: function() {

    this.setData({
      num: this.data.num +1 
    })
  },
  changeArray: function() {
    this.setData({
      'array[0].name':'Mary'
    })
  },
  changeObject: function(){
    this.setData({
      'object.name': 'Mary'
    });
  }
})

PageObject[] getCurrentPages()

全局方法,获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。

注意:

  1. 不要尝试修改页面栈,会导致路由以及页面状态错误。
  2. 不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。