Ionic2函数setInterval无法获取参数

时间:2016-04-10 04:26:32

标签: javascript angular ionic2

我使用Ionic2构建一个基于Angular2和Cordova的应用程序。 当我使用函数setInterval来获取一个名为clickCount的参数时,它会发出一个未定义的错误。

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

2 个答案:

答案 0 :(得分:2)

这是一个范围问题,要快速解决,只需这样做:

startTapped(event) {
   var that = this;
   this.stop = setInterval(function() {
       console.log(that.clickCount); //no more undefined error
   }, 1000);
}
我发生了因为“setInterval”里面的“this”是函数“setInterval”它自己,而不是“startTapped”范围的“this”,如果你创建一个指向“this”的指针,你可以使用那个指针在“setInterval”里面

答案 1 :(得分:1)

我不知道ionic但我认为你应该使用arrow function/fat arrow,如下所示,

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

您可以使用arrow functionarrow function来查看此答案。但没有离子。对不起