小程序学习1

1,页面生命周期 (顺序)

onLoad        只会触发1次

onShow       一般从别的页面返回到当前页面时

onReady      只会触发1次,表示页面已经准备妥当,在逻辑层就可以和视图层进行交互了

onHide         wx.navigateTo切换到其他页面、底部tab切换时触发,需要销毁页面时不走此方法直接onUnLoad

onUnLoad    wx.redirectTo或wx.navigateBack返回到其他页时

 

2,回调方法参数说明

     App的onLanuch(options)options是记录了从哪里启动这个小程序的信息

     Page的onLoad(options)options是前一页url拼接的参数Object

3,渲染异步

由于小程序的渲染层和逻辑层分别在两个线程中运行,所以setData传递数据实际是一个异步的过程,所以setData的第二个参数是一个callback回调,在这次setData对界面渲染完毕后触发。

Page({
  onLoad: function(){
    this.setData({
      text: 'change data'
    }, function(){
      // 在这次setData对界面渲染完毕后触发
    })
  }
})

4,页面跳转

{
  "tabBar": {
    "list": [
      { "text": "Tab1", "pagePath": "pageA" },
      { "text": "Tab1", "pagePath": "pageF" },
      { "text": "Tab1", "pagePath": "pageG" }
    ]
  }
}

以后三个tab,页面栈:[ pageA, pageB, pageC ]

使用 wx.navigateTo({ url: 'pageD' }) 可以往当前页面栈多推入一个 pageD,此时页面栈变成 [ pageA, pageB, pageC, pageD ]。
使用 wx.navigateBack() 可以退出当前页面栈的最顶上页面,此时页面栈变成 [ pageA, pageB, pageC ]。
使用wx.redirectTo({ url: 'pageE' }) 是替换当前页变成pageE,此时页面栈变成 [ pageA, pageB, pageE ],当页面栈到达10层没             法再新增的时候,往往就是使用redirectTo这个API进行页面跳转。

使用wx.switchTab({ url: 'pageF' }),此时原来的页面栈会被清空,只留pageA

使用wx. reLaunch({ url: 'pageH' }) 重启小程序,并且打开pageH,此时页面栈为 [ pageH ]

ps:wx.navigateTo和wx.redirectTo只能打开非TabBar页面,wx.switchTab只能打开Tabbar页面

5,组件

所有组件名和属性都是小写,多个单词会以英文横杠 "-" 进行连接

data-* 为自定义属性,会在bindtap事件触发时传到event.currentTarget.dataset

6,API

一般调用的约定:

  1. wx.on* 开头的 API 是监听某个事件发生的API接口,接受一个 Callback 函数作为参数。当该事件触发时,会调用 Callback 函数。
  2. 如未特殊约定,多数 API 接口为异步接口 ,都接受一个Object作为参数。
  3. API的Object参数一般由success、fail、complete三个回调来接收接口调用结果,示例代码如代码清单3-17所示,详细说明如表3-9所示。
  4. wx.get* 开头的API是获取宿主环境数据的接口。
  5. wx.set* 开头的API是写入数据到宿主环境的接口。

7,事件

事件捕获 过程是 从父控件到子控件

事件冒泡 过程是 从子控件到父控件

先事件捕获 再 事件冒泡 所以capture开头的方法先执行,

bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡

同时bind和catch前还可以加上capture-来表示捕获阶段

capture-bind 捕获完了继续冒泡

capture-catch 捕获完了不冒泡

bind和catch应该互斥存在

<view class="outer" bind:tap="handleTap4" capture-bind:tap="handleTap1">
  outer view
  <view class="middle" catch:tap="handleTap5">
    middle view
    <view class="inner" bind:tap="handleTap3" capture-bind:tap="handleTap2">
    inner view
    </view>
  </view>
</view>

执行顺序:

handleTap1     有捕获所以在捕获阶段打印

handleTap2     有捕获所以在捕获阶段打印

handleTap3     捕获阶段结束后,会继续冒泡,所以在冒泡方法执行完继续冒泡

handleTap5     没有捕获阶段,后续冒泡到middle,这里阻止冒泡了,所以在catch方法执行完不再冒泡

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值