2016-04-10 7 views
3

Ich benutze Ionic2 um eine App zu erstellen, die auf Angular2 und Cordova basiert. Wenn ich die Funktion setInterval verwende, um einen Parameter namens clickCount zu erhalten, tritt ein undefinierter Fehler auf.Ionic2 Funktion setInterval kann keinen Parameter bekommen

export class ItemDetailsPage { 
static get parameters() { 
    return [[NavController], [NavParams]]; 
} 
constructor(nav, navParams) { 
    this.nav = nav; 
    this.clickCount = 0; 
    this.selectedItem = navParams.get('item'); 
} 

startTapped(event) { 
    var cp= this.clickCount; //here can get the clickCount 
    this.stop = setInterval(function() { 
     console.log(this.clickCount); //occur a undefined error 
    }, 1000); 
} 

}

the error

Antwort

2

es ist ein Umfang Problem, es schnell zu lösen, tun Sie es einfach:

startTapped(event) { 
    var that = this; 
    this.stop = setInterval(function() { 
     console.log(that.clickCount); //no more undefined error 
    }, 1000); 
} 

ich geschieht, weil „dies“ innerhalb der „setInterval“ ist die Funktion „setInterval“ es sich von selbst, nicht das "dies" des Bereichs von "startTapped", wenn Sie einen Zeiger auf das "this" erstellen, können Sie diesen Zeiger innerhalb "setInterval" verwenden

+0

das ist richtig! vielen Dank. –

1

Ich weiß nicht, ionic aber ich denke, Sie sollten arrow function/fat arrow verwenden, wie unten gezeigt,

this.stop = setInterval(()=> { 
     console.log(this.clickCount); //this will log this.clickCount 
    }, 1000); 
} 

Sie diese Antwort mit arrow function überprüfen und ohne arrow function. Aber kein Ionic. das tut mir leid.

+0

Yup sicher. Versuch es. – micronyks

+0

Drix lösen, danke –