2011-03-03 102 views
0

尊敬的全部, 我已經以編程方式創建了一個新的Dojo按鈕。我在我的一個自定義dojo類中這樣做。在創建按鈕時,我定義了一個onClick方法,該按鈕在點擊按鈕時應該被調用。這個方法是類的一部分。我無法調用該方法,因爲單擊按鈕時,「this」的範圍有所不同。有人可以幫我解決這個問題嗎?以編程方式創建的Dojo按鈕 - 範圍問題

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()當我點擊創建的按鈕時調用方法。

+0

從你的問題中不清楚你希望調用removetrack()的範圍。我將在下面回答假設它是createCustomButton中的範圍,但如果這是錯誤的,請澄清,我會看看是否我可以改變我的答案:) – mrtom 2011-03-03 12:01:10

回答

0

使用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(); 
+0

非常感謝。我認爲我們需要使用this.removetrack()。 – Steves 2011-03-03 13:00:07

+0

是的,你會,很好的地方。我會更新我的代碼示例 – mrtom 2011-03-03 13:58:30

-1

我無法做到更好的方法,如果你需要緊急修復

var button = new dijit.form.Button({ 
        label: "Custom!", 
        onClick:function(){ 
        CustomClass().removetrack(); 
       }},"result"); 

希望有人可以給你更好的選擇。

+0

不,這是行不通的。這看起來像是一個附加到CustomClass函數的removetrack函數。 – mwilcox 2011-03-04 20:10:42

相關問題