2017-08-12 2 views
0

Ich habe das Plugin korrekt installiert, wie in den Ionic 2 Docs beschrieben.BackgroundMode Plugin für Ionic 2 ist undefined

Verwendung des folgenden Codes:

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); 
     }); 

Returns BG Mode ENABLED in der Konsole, aber das zweite Teil in den Timeout-Block zurückkehrt:

Cannot read property isActive of undefined

Irgendwelche Ideen, was ist der Grund dafür?

Antwort

1

Der Kontext (this) in Ihrer Funktion ändert sich, wenn Sie die function() {} Syntax für Rückrufe verwenden. Verwenden Sie arrow functions den richtigen Kontext zu erfassen:

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. Siehe this section für wie unterscheidet es sich von Syntax.

+0

Danke, ich muss es versuchen, wenn ich zurück bin :) hatte gerade ein Lesen der Dokumente obwohl, scheint wie das ist das Problem – ldmo

Verwandte Themen