【问题标题】:How to subscribe Ionic 2 platform.pause EventEmitter?如何订阅 Ionic 2 platform.pause EventEmitter?
【发布时间】:2016-09-30 13:58:54
【问题描述】:

我正在尝试使用以下代码进行订阅,但它不起作用。

import { Platform } from 'ionic-angular';

@Page({
    templateUrl: 'build/pages/test.html',
})

export class Test {

  constructor(private platform: Platform) {
    this.platform.pause.subscribe(() => {
      console.log('paused')
    });
  }
}

我正在使用 Ionic 2 和 TypeScript,Angular 2。由于 platform.pause 是 Ionic 2 提供的 EventEmitter,我想它应该能够被订阅。但是,当我将应用程序置于后台时,console.log('pause') 不会被触发。

我应该将Platform 添加到提供程序或类似的东西吗?另外,this.platform 不是nullthis.platform.ready().then(()=>{console.log('ready')}) 完美运行。

【问题讨论】:

  • “不起作用”是什么意思?我paused没有打印?
  • @GünterZöchbauer 是的,完全正确。它没有按预期打印出来
  • 这里的this.platform.pause 是什么?用更多代码更新您的问题,或者您可以在 plunker 上重现您的问题
  • 尝试使用从本博客/教程复制的document.addEventListener('pause', () => { });webcake.co/listening-for-pause-and-resume-events-in-ionic-2
  • @Will.Harris 是的,我知道。但是我的老板更喜欢使用原生 Ionic 2。在这里(forum.ionicframework.com/t/android-hardware-back-button/41384/3),Ionic 团队说back button 尚未实现。那么这是否意味着this.platform.pause 也没有实现?

标签: ionic-framework angular ionic2


【解决方案1】:

我认为你错过了 platform.ready() 如下

constructor( private platform: Platform ) {
    platform.ready().then(() => {    
        this.platform.pause.subscribe(() => {
            console.log('[INFO] App paused');
        });

        this.platform.resume.subscribe(() => {
            console.log('[INFO] App resumed');
        });
    });
}

上面的代码对我有用。希望对你也有帮助。

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 1970-01-01
    • 2022-09-22
    • 2017-03-07
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    相关资源
    最近更新 更多