2013-07-12 95 views
0

由於我通過使用咖啡D3.js,下面的代碼工作正常:將D3.js事件綁定到函數?

$ -> 
    force = d3.layout.force() 
    .on('tick', -> alert('tick triggered')) 

但這些不這樣做,因爲當時沒有任何tick功能:

$ -> 
    force = d3.layout.force() 
    .on('tick', tick) 
    tick = -> 
    alert('tick triggered') 

那麼有沒有什麼辦法可以將D3事件綁定到一個函數?

BTW,我嘗試

$ -> 
    tick = -> 
    alert('tick triggered') 
    force = d3.layout.force() 
    .on('tick', tick) 

但有些Problem parsing d="MNaN,NaNLNaN,NaN"一點毛病,而蜱運行。

+0

請上傳[的jsfiddle]你的代碼(http://jsfiddle.net/) –

+1

'tick'是'undefined'當您嘗試在第二個使用它,第三個是好的。你的'NaN'問題是別的。 –

+0

@ muistooshort是的,這就是要點! –

回答

0

嘗試改變這裏

tick = -> 

使用本

tick: => 
0
$ -> 
    force = d3.layout.force() 
    .on('tick', tick) 
    tick = -> 
    alert('tick triggered') 

意味着

$(function() { 
    var force, tick; 
    force = d3.layout.force().on('tick', tick); 
    return tick = function() { 
    return alert('tick triggered'); 
    }; 
}); 

這裏return tick = function(){}是非法return語句。

也許您需要將ticknull添加到咖啡代碼的末尾。 是這樣的。

$ -> 
    force = d3.layout.force() 
    .on('tick', tick) 
    tick = -> alert('tick triggered') 
    null 
////////////// 
$(function() { 
    var force, tick; 
    force = d3.layout.force().on('tick', tick); 
    tick = function() { 
    return alert('tick triggered'); 
    }; 
    return null; 
});