2017-08-12 70 views
0

我已按照Ionic 2 Docs中的描述正确安装了BackgroundMode插件。Ionic 2的BackgroundMode插件未定义

使用下面的代码:

this.backgroundMode.on('enable').subscribe(()=>{ 
      console.log("BG Mode ENABLED"); 
      setTimeout(function(){ 
      try{ 
       console.log("BG Active"+this.backgroundMode.isActive()); 
      }catch(err){ 
       console.log(err.message); 
      } 
      },5000); 
     }); 

返回控制台BG Mode ENABLED,但第二部分的超时块回报:

Cannot read property isActive of undefined

任何想法是什么原因造成的?

回答

1

当您对回调使用function() {}语法时,函数中的上下文(this)会发生变化。使用arrow functions捕捉到正确的上下文:

this.backgroundMode.on('enable').subscribe(()=>{ 
     console.log("BG Mode ENABLED"); 
     setTimeout(() => { // Use arrow function here 
     try{ 
      console.log("BG Active"+this.backgroundMode.isActive()); 
     }catch(err){ 
      console.log(err.message); 
     } 
     },5000); 
}); 

Documentation on arrow functions。请参阅this section了解它与function() {}语法的不同之处。

+0

谢谢,当我回来的时候我会尝试它:)虽然只是阅读了文档,但似乎是这样的问题 – ldmo