Appearance
框架接口
页面
getApp()
getApp() 函数用于获取当前应用实例,一般用于获取 globalData 。
js
const app = getApp()
console.log(app.globalData)- 不要在定义于
App()内的函数中,或调用App前调用getApp(),可以通过this.$scope获取对应的 app 实例 - 通过
getApp()获取实例之后,不要私自调用生命周期函数。 - v3 模式加速了首页
nvue的启动速度,在首页nvue中使用getApp()不一定可以获取App对象- v3 版本:
const app = getApp({allowDefault: true})用来获取原始的App对象,在首页对globalData等初始化
- v3 版本:
getCurrentPages()
getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
| 方法 | 描述 | 平台说明 |
|---|---|---|
page.$getAppWebview() | 获取当前页面的 webview 对象实例 | App |
page.route | 获取当前页面的路由 |
getCurrentPages()仅用于展示页面栈,请勿修改页面栈
navigateTo,redirectTo只能打开非 tabBar 页面switchTab只能打开tabBar页面reLaunch可以打开任意页面- 页面底部的
tabBar由页面决定,即只要是定义为tabBar的页面,底部都有tabBar - 不能在
App.vue里面进行页面跳转
$getAppWebview()
uni-app 在 内置了一个方法 $getAppWebview() :得到当前webview的对象实例
此方法仅 App 支持
js
var pages = getCurrentPages();
var page = pages[pages.length - 1];
// #ifdef APP-PLUS
var currentWebview = page.$getAppWebview();
console.log(currentWebview.id);//获得当前webview的id
console.log(currentWebview.isVisible());//查询当前webview是否可见
);
// #endif页面通讯
uni.$emit(eventName,OBJECT)
触发全局的自定事件。附加参数都会传给监听器回调。
| 属性 | 类型 | 描述 |
|---|---|---|
eventName | String | 事件名 |
OBJECT | Object | 触发事件携带的附加参数 |
uni.$on(eventName,callback)
监听全局的自定义事件。事件由 uni.$emit 触发,回调函数会接收所有传入事件触发函数的额外参数。
| 属性 | 类型 | 描述 |
|---|---|---|
eventName | String | 事件名 |
callback | Function | 事件的回调函数 |
uni.$once(eventName,callback)
监听全局的自定义事件。但只触发一次,触发后移除监听器。
| 属性 | 类型 | 描述 |
|---|---|---|
eventName | String | 事件名 |
callback | Function | 事件的回调函数 |
uni.$off(eventName, callback])
移除全局自定义事件监听器
| 属性 | 类型 | 描述 |
|---|---|---|
eventName | Array < String > | 事件名 |
callback | Function | 事件的回调函数 |
Tips
- 无参数:移除所有事件监听器
- 只提供事件:移除该事件所有的监听器
- 同时提供事件与回调:只移除此回调的监听器,提供回调必须跟
$on回调为同一个才能移除
上述函数触发的事件都是 App 全局级别的,跨任意组件,页面,nvue,vue 等
onLoad里边uni.$on注册监听onUnload里边uni.$off移除- 一次性事件,直接使用
uni.$once监听