2016-12-22 73 views
0

我繼承了一些我努力工作的JavaScript代碼。我相信我需要'調用一個函數作爲一種方法',這是另一個'作爲一種方法的函數'。下面列出了刪節的代碼。'調用函數作爲一種方法',在另一個'函數作爲一種方法'

drawer = { 
    ... 
    ChartDrawer: function(var1,var2,etc) 
{ 
... 
this.drawChart = function(node) 
    { 
    ... 
     $(this.jqValToggle + ' #valuation-box').click(function(){ 
      console.log('clicked'); 
      drawer.valToggle(); 
      var targetNode = addrFromRawAddr(rawAddr) 
      showNarrative(targetNode); 
      /// THIS IS WHERE I'D LIKE TO CALL drawChart FROM 
     }); 
    } 
} 

能否請您在上面指定的代碼中從位置調用'drawChart'所需的語法。

我原以爲我可以使用drawer.ChartDrawer.drawChart(node);,但這會得到'Uncaught TypeError:drawer.ChartDrawer.drawChart不是函數'。我也曾嘗試使用「this.drawChart」沒有成功的變化

+1

幾乎是[如何在回調中訪問正確'this'的副本?](http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-回電話)。它提供了多種解決方案來訪問回調中的'this'。 –

+0

嘗試'返回arguments.callee(節點);'showNarrative(targetNode)後調用 –

回答

3

試試這個:

$(this.jqValToggle + ' #valuation-box').click(function(){ 
     /* ... */ 
     this.drawChart(); 
    }.bind(this)); 

通過迫使單擊處理在當前上下文中運行,而不是在單擊元素的情況下,我們保留對drawChart方法的訪問權限。

+0

@PaulTrotter:代碼中有一個錯字,再次看看。 –

+1

隨着Felix對語法的修正,這完美地工作。謝謝你們倆 –

相關問題