使用Ionic(Angular 2)我正在构建一个应用程序,但以下代码似乎不起作用,因为我无法在Dialog承诺中访问函数leaveGroup(group)。
leaveGroupTapped(event, group) {
this.dialogs.confirm("Are you sure you want to leave this group?", "Confirm")
.then(function (index) {
if (index == 0) {
//dialog dismissed - do nothing
} else if (index == 1) {
//OK call next function to remove the group
this.leaveGroup(group) //does not work ofcourse
} else {
//Cancel
}
});
}
leaveGroup(group) {
//Do some stuff here
}
你会如何做这项工作?
由于
答案 0 :(得分:2)
问题在于定义this.leaveGroup()
的范围。
将您的代码修改为以下内容:
leaveGroupTapped(event, group) {
this.dialogs.confirm("Are you sure you want to leave this group?", "Confirm")
.then((index) => {
if (index == 0) {
//dialog dismissed - do nothing
} else if (index == 1) {
//OK call next function to remove the group
this.leaveGroup(group) //does not work ofcourse
} else {
//Cancel
}
});
}
请注意,我在这里使用了ES6的箭头功能。现在this.leaveGroup()
的范围应该被定义为它将在你所指的范围内工作。
leaveGroup()
现在应该正常工作。
箭头函数表达式的语法短于函数 表达式并不绑定它自己的this,arguments,super或 new.target - MDN
要了解有关箭头功能,此和词汇范围的更多信息,请执行以下操作: