2017-08-12 66 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