2013-10-04 54 views
1

我很新的dojo,我試圖用lang.hitch方法來處理我的回調,但我一直得到一個「未捕獲的參考錯誤:不是定義的錯誤「時使用它。我確定我做錯了什麼 - 我只是不確定它是什麼。 this引用了我在initializeLocators函數中新創建的對象,並在我遍歷我的代碼時進行了驗證。 showResults方法的candidates參數從事件處理閉包中返回。謝謝你的幫助。使用dojo獲取方法未定義的錯誤lang.hitch

我的類:

define(["dojo/_base/declare", ..., "dojo/_base/lang", "dojo/on", "dojo/dom", ...], 
function(declare, ..., lang, ...){ 
    var SDCLocateClass = declare(null, { 
     ..., 
     constructor: function() { 
      this.initializeLocators(); 
     }, 
     initializeLocators: function() { 
      this.addressNode = dom.byId("resultsDiv"); 


      //set up the address locator functionality 
      this.locator = new Locator("http://..."); 
      this.locator.on("address-to-locations-complete", lang.hitch(this, showResults)); 
     }, 
     showResults: function(candidates) { 
      ... 
     }, 
    }); 
    return SDCLocateClass; 
}); 

回答

2

showResults是沒有定義的變量。使用this.showResults或使用字符串"showResults"

this.locator.on("address-to-locations-complete", 
    lang.hitch(this, this.showResults)); 
+0

完美,謝謝!我希望文檔能夠更好地解釋說明方法名稱HAS是一個字符串。 – Shawn

+0

它不需要是一個字符串,它需要是一個字符串或一個函數。這裏的問題並不特定於Dojo; 'showResults'沒有在您的代碼中定義。如果你試圖在其他地方使用showResults,你會得到相同的錯誤。 –

相關問題