启动页面

page(params) 是进入某个页面的时候会执行的页面入口函数,params是一个object类型的参数,定义了页面初始数据,生命周期钩子函数,事件处理函数等。

params参数说明:
属性类型描述
dataObject页面的初始数据
onLoadFunction生命周期函数—监听页面加载
onReadyFunction生命周期函数—监听页面初次渲染完成
onShowFunction生命周期函数—监听页面显示
onHideFunction生命周期函数—监听页面隐藏
onUnloadFunction生命周期函数—监听页面卸载
onPullDownRefreshFunction页面相关事件处理函数—监听用户下拉动作
onReachBottomFunction页面上拉触底事件的处理函数
onShareAppMessageFunction用户点击右上角转发
onPageScrollFunction页面滚动触发事件的处理函数
onTabItemTapFunction当前是 tab 页时,点击 tab 时触发
其他Any开发者可以添加任意的函数或数据到 object 参数中,在页面的函数中用 this 可以访问
示例代码:
  1. // index.js
  2. Page({
  3. data: {
  4. text: "This is page data."
  5. },
  6. onLoad: function(options) {
  7. // Do some initialize when page load.
  8. },
  9. onReady: function() {
  10. // Do something when page ready.
  11. },
  12. onShow: function() {
  13. // Do something when page show.
  14. },
  15. onHide: function() {
  16. // Do something when page hide.
  17. },
  18. onUnload: function() {
  19. // Do something when page close.
  20. },
  21. onPullDownRefresh: function() {
  22. // Do something when pull down.
  23. },
  24. onReachBottom: function() {
  25. // Do something when page reach bottom.
  26. },
  27. onShareAppMessage: function () {
  28. // return custom share data when user share.
  29. },
  30. onPageScroll: function() {
  31. // Do something when page scroll
  32. },
  33. onTabItemTap(item) {
  34. console.log(item.index)
  35. console.log(item.pagePath)
  36. console.log(item.text)
  37. },
  38. // Event handler.
  39. viewTap: function() {
  40. this.setData({
  41. text: 'Set some data for updating view.'
  42. }, function() {
  43. // this is setData callback
  44. })
  45. },
  46. customData: {
  47. foo: 'bar'
  48. }
  49. })

页面首次渲染

初始化数据将作为页面的第一次渲染。data 将会以 JSON 的形式由逻辑层传至渲染层,所以其数据必须是可以转成 JSON 的格式:字符串,数字,布尔值,对象,数组。

渲染层可以通过 TTML 对数据进行绑定。

示例代码:
  1. <!-- index.ttml -->
  2. <view>{{text}}</view>
  3. <view>{{array[0].msg}}</view>
  1. // index.js
  2. Page({
  3. data: {
  4. text: 'init data',
  5. array: [{msg: '1'}, {msg: '2'}]
  6. }
  7. })

页面事件处理

除了初始化数据和生命周期函数,Page 中还可以定义一些特殊的函数:事件处理函数。在渲染层可以在组件中加入事件绑定,当达到触发事件时,就会执行 Page 中定义的事件处理函数。

示例代码:
  1. <!-- index.ttml -->
  2. <view bindtap="viewTap"> click me </view>
  1. // index.js
  2. Page({
  3. viewTap: function() {
  4. console.log('view tap')
  5. }
  6. })

更新页面渲染 setData()

字段类型必填描述
dataObject这次要改变的数据
callbackFunction回调函数

参数 data 以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value。 callback 是一个回调函数,在这次setData对界面渲染完毕后调用。

示例代码:
  1. <!--index.ttml-->
  2. <view>{{text}}</view>
  3. <button bindtap="changeText"> Change normal data </button>
  4. <view>{{num}}</view>
  5. <button bindtap="changeNum"> Change normal num </button>
  6. <view>{{array[0].text}}</view>
  7. <button bindtap="changeItemInArray"> Change Array data </button>
  8. <view>{{object.text}}</view>
  9. <button bindtap="changeItemInObject"> Change Object data </button>
  10. <view>{{newField.text}}</view>
  11. <button bindtap="addNewField"> Add new data </button>
  1. //index.js
  2. Page({
  3. data: {
  4. text: 'init data',
  5. num: 0,
  6. array: [{text: 'init data'}],
  7. object: {
  8. text: 'init data'
  9. }
  10. },
  11. changeText: function() {
  12. // this.data.text = 'changed data' // 这样无法更新UI
  13. this.setData({
  14. text: 'changed data'
  15. })
  16. },
  17. changeNum: function() {
  18. this.data.num = 1
  19. this.setData({
  20. num: this.data.num
  21. })
  22. },
  23. changeItemInArray: function() {
  24. this.setData({
  25. 'array[0].text':'changed data'
  26. })
  27. },
  28. changeItemInObject: function(){
  29. this.setData({
  30. 'object.text': 'changed data'
  31. });
  32. },
  33. addNewField: function() {
  34. this.setData({
  35. 'newField.text': 'new data'
  36. })
  37. }
  38. })

原文: https://developer.toutiao.com/docs/framework/startupPage.html