2014-03-14 46 views
1

我遇到了一個問題,我需要套接字和類實例但無法獲取它們。 我有配置文件在哪裏是事件如:消息,發佈,共享。我有以下代碼:Socket.io Nodejs CoffeeScript在socket.on中獲取套接字和當前繼承的類變量

module.exports = class Controller 

    constructor : (container) -> 
     @_routes = null 

    _generateRoutes : (routes) -> 
     @_routes = routes 

    _bind : (socket) -> 
     instance = @ 
     for route in @_routes 
      # TODO : fix this 
      socket.on route['event'], (data) -> 
       instance[route['action']](@, data) 

問題是,我可以從該表中調用任何事件,它總是以共享事件結束。我認爲這可能是實例[route ['action]]中的問題。有沒有辦法明確說我只想要一個變量的值,而不是函數中的當前變量?

因此,每次我可以在直接綁定套接字動作的情況下獲取套接字,或者在繼承類中使用=>時只是實例類實例。

感謝您的回覆

回答

1

所以我意識到那個代碼有什麼問題。它應該使用閉包。對於關閉,咖啡標記「do」中有一個關鍵字。然後,它不會使用路線的變化值,而是在每個循環中使用本地值。

固定_bind功能如下:

_bind : (socket) -> 
    instance = @ 
    for route in @_routes 
      do (route)-> 
       socket.on route['event'], (data) -> 
        instance[route['action']](@, data) 
+1

您需要標記這是答案。 – jcollum