2016-12-22 93 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对语法的修正,这完美地工作。谢谢你们俩 –

相关问题