2016-12-22 11 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.jqValToggle + ' #valuation-box').click(function(){ 
     /* ... */ 
     this.drawChart(); 
    }.bind(this)); 

:私も

+1

ほとんどの場合、[コールバック内で正しい 'this 'にアクセスする方法は?](http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-折り返し電話)。これは、コールバックの中で 'this'にアクセスするための複数のソリューションを提供します。 –

+0

showNarrative(targetNode)の後に 'return arguments.callee(node);'を試してください –

答えて

3

これを試してみていない成功を収めて「this.drawChart」を使用してバリエーションを試してみました、私たちはdrawChartメソッドへのアクセスを保持します。

+0

@PaulTrotter:コードに入力ミスがあり、もう一度見てください。 –

+1

Felixの構文の修正により、これは完全に機能します。あなたがた両方に感謝します –

関連する問題