# globalEvent

globalEvent 用于监听持久性事件,例如定位信息,陀螺仪等的变化。全局事件是需要额外 APIs 处理的次要 API。你能通过 addEventListener 注册事件监听,当你不再需要的时候,也可以通过 removeEventListener 取消事件监听。

提醒

  • 这是一个实例级别的事件,而非应用级别。

# 如何让你的模块支持全局事件

API 开发完成后,当需要发送事件时,需要通过以下方法:

/**
  *
  * @param eventName eventName
  * @param params event params
  */
instance.fireGlobalEventCallback(eventName,params);

如何在 组件或模块中分发全局事件?只需在文档元素上分派事件:

var evt = new Event('some-type')
evt.data = { foo: 'bar' }
document.dispatchEvent(evt)

示例

# Android

Map<String,Object> params=new HashMap<>();
params.put("key","value");
mWXSDKInstance.fireGlobalEventCallback("geolocation",params);

# iOS

[weexInstance fireGlobalEvent:@"geolocation" params:@{@"key":@"value"}];

# API

# addEventListener(String eventName, String callback)

注册全局事件。

# 参数

  • eventName {string}:需要监听的事件名称。
  • callback {Function}:触发事件后的回调函数。

# 示例

var globalEvent = light.requireModule('globalEvent');
globalEvent.addEventListener("geolocation", function (e) {
  console.log("get geolocation")
});

# removeEventListener(String eventName)

取消事件监听。

# 参数

  • eventName {string}:需要取消的事件名称。

# 示例

var globalEvent = light.requireModule('globalEvent');
globalEvent.removeEventListener("geolocation");

# 已有的全局事件

0.14

# 应用前后事件

对获取应用前后台事件做了支持,开发者可以在页面内监听对应的事件,获得应用被前后后这后台,以方便暂停音乐,视频等,只需要指定需要监听的事件名称和回调函数就可以,例如:

var globalEvent = light.requireModule('globalEvent');
globalEvent.addEventListener("WXApplicationDidBecomeActiveEvent", function (e) {
  console.log("WXApplicationDidBecomeActiveEvent");
});

支持的事件名称

  • WXApplicationDidBecomeActiveEvent 应用被前台的时候触发
  • WXApplicationWillResignActiveEvent 应用即将被后台时候触发

目前只有 platform 为 iOS 和 Android 才能支持。

# 菜单栏点击事件

开发者可以在页面内监听菜单栏点击事件,自定义点击菜单栏后的操作。例如我们点击菜单栏中间的tab,先清除本地数据,再进行页面的跳转。

var globalEvent = light.requireModule('globalEvent');
globalEvent.addEventListener("onTabBarClick", (e) => {
  this.$api.resetStorage().then(() => {
    this.$light.navigate("market/index",{},{
        navBarType: '2'
    })
  })
});