函数内部调用方法

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