Dojo按钮以编程方式创建作用域问题

Dojo按钮以编程方式创建作用域问题,dojo,scope,dijit.form,Dojo,Scope,Dijit.form,亲爱的各位, 我通过编程创建了一个新的Dojo按钮。我在我的一个自定义dojo类中这样做。在创建按钮时,我定义了一个onClick方法,单击按钮时应该调用该方法。此方法是类的一部分。我无法调用该方法,因为当单击按钮时,该方法的范围不同。有人能帮我修一下吗 dojo.declare("CustomClass",null,{ createCustomButton:function(){ var button = new dijit.form.Button({onClick:function(){

亲爱的各位, 我通过编程创建了一个新的Dojo按钮。我在我的一个自定义dojo类中这样做。在创建按钮时,我定义了一个onClick方法,单击按钮时应该调用该方法。此方法是类的一部分。我无法调用该方法,因为当单击按钮时,该方法的范围不同。有人能帮我修一下吗

dojo.declare("CustomClass",null,{
createCustomButton:function(){
var button = new dijit.form.Button({onClick:function(){
                    removetrack();
                    testDataGrid.filter({status:"COMPLETED"});
                }},"testButton1");
},
removetrack:function(){
//some logic
}
});


var customObj=new CustomClass();
customObj.createCustomButton();

我需要在单击“已创建”按钮时调用removetrack方法。

如果您需要紧急修复,我无法找到更好的方法

var button = new dijit.form.Button({
                    label: "Custom!",
                    onClick:function(){
                    CustomClass().removetrack();
                }},"result");
希望有人能给你更好的选择。

使用dojo.hitch

dojo.declare("CustomClass",null,{
    createCustomButton:function(){
        var button = new dijit.form.Button({
            onClick:dojo.hitch(this, function(){
                this.removetrack();
                testDataGrid.filter({status:"COMPLETED"});
            })
        },"testButton1");
    },
    removetrack:function(){
        //some logic
    }
});


var customObj=new CustomClass();
customObj.createCustomButton();

您的问题不清楚您希望调用removetrack的范围。我将在下面回答,假设这是createCustomButton中的范围,但如果这是错误的,请澄清,我将看看是否可以更改我的答案:非常感谢。我想我们需要用这个。removetrack。不,那不行。看起来CustomClass函数附带了一个removetrack函数。