ios - 打开 iOS 控制中心后未执行附加到窗口事件的回调函数
问题描述
在我的 IOS 离子应用程序中,我正在收听由 cordova 插件生成的窗口事件。这是我用于侦听事件并执行操作的代码。
window.addEventListener('event', (event) => {
...
console.log("event received");
doSomething();
});
doSomething(){console.log("perform an action");}
一切正常,在我打开 IOS 控制中心(从底部向上滑动)之前,我能够接收到事件。再次关闭控制中心后,我可以看到事件已记录(“收到事件”),但从未调用函数 doSomething()。有人遇到过类似情况吗?
解决方案
由于事件是在 angular 之外生成的,我需要调用 ngZone.run 以让 angular 知道发生了某些事情并触发更改。我是这样弄的
constructor(private zone: NgZone) {}
ngOnInit(){
window.addEventListener('event', (event) => {
this.ngZone.run(() => {
do stuff;
});
}
推荐阅读
- javascript - 数据以未定义形式返回
- javascript - jQuery 弹出窗口在 IE11 企业模式下不起作用
- javascript - 在 javascript 上使用来自 asp.net 的数组
- python - 无论如何我可以从python中的MIME对象获取用户名吗?
- node.js - 对Node中数组中的每个对象调用一个函数
- javascript - 使用 R 使用表单和 JS 抓取网站
- c# - 使用 Json.Net 的 JObject.FromObject 方法进行序列化时,我可以使用自定义 ContractResolver 吗?
- jquery - 在html中输出一个jquery变量?
- xml - XML 解析错误:我不能在 DynamicPage 中嵌套 RowActionItem 吗?
- python - 绕过Django中多对多关系的唯一约束的最佳方法?