函数内部调用方法
Call method inside function
我有一个来自 metronic 主题的向导,我试图调用一个函数来检查我的数组是否包含重复项。
如果我删除这部分代码,它就可以正常工作。
console.log(this.checkIfArrayIsUnique());
代码
var wizard = (<any>$('#m_wizard')).mWizard();
//== Validation before going to next page
wizard.on('change', function(wizard) {
if(wizard.getStep() > 2){
console.log(this.checkIfArrayIsUnique());
}
mApp.scrollTop();
})
现在我的 checkIfArrayIsUnique() 只是一个虚拟函数
checkIfArrayIsUnique()
{
return true;
}
如何在 'change' 事件之外调用方法?所以我能够 运行 通过我的数组并确认它没有任何重复项。
问题是 "function(wizard)" 调用,因为它创建了一个新的范围。但是您的 checkIfArrayIsUnique() 实际上超出了这个范围。
尝试使用 ES6 函数语法
wizard.on('change',(wizard) => {
if(wizard.getStep() > 2){
console.log(this.checkIfArrayIsUnique());
}
mApp.scrollTop();
})
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
在你的更改函数中,变量 this 指向当前函数,要使用它,你应该将 this 指向 out 对象,你应该这样写:
var that = this;
var wizard = (<any>$('#m_wizard')).mWizard();
//== Validation before going to next page
wizard.on('change', function(wizard) {
if(wizard.getStep() > 2){
console.log(that.checkIfArrayIsUnique());
}
mApp.scrollTop();
})
我有一个来自 metronic 主题的向导,我试图调用一个函数来检查我的数组是否包含重复项。
如果我删除这部分代码,它就可以正常工作。
console.log(this.checkIfArrayIsUnique());
代码
var wizard = (<any>$('#m_wizard')).mWizard();
//== Validation before going to next page
wizard.on('change', function(wizard) {
if(wizard.getStep() > 2){
console.log(this.checkIfArrayIsUnique());
}
mApp.scrollTop();
})
现在我的 checkIfArrayIsUnique() 只是一个虚拟函数
checkIfArrayIsUnique()
{
return true;
}
如何在 'change' 事件之外调用方法?所以我能够 运行 通过我的数组并确认它没有任何重复项。
问题是 "function(wizard)" 调用,因为它创建了一个新的范围。但是您的 checkIfArrayIsUnique() 实际上超出了这个范围。
尝试使用 ES6 函数语法
wizard.on('change',(wizard) => {
if(wizard.getStep() > 2){
console.log(this.checkIfArrayIsUnique());
}
mApp.scrollTop();
})
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
在你的更改函数中,变量 this 指向当前函数,要使用它,你应该将 this 指向 out 对象,你应该这样写:
var that = this;
var wizard = (<any>$('#m_wizard')).mWizard();
//== Validation before going to next page
wizard.on('change', function(wizard) {
if(wizard.getStep() > 2){
console.log(that.checkIfArrayIsUnique());
}
mApp.scrollTop();
})