Socket.io Nodejs CoffeeScript在socket.on中获取套接字和当前inheritance的类variables
我遇到了一个问题,我需要套接字和类实例,但无法得到它们。 我有configuration文件在哪里事件如:消息,发布,共享。 我有以下代码:
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]]中的问题。 有没有办法明确说我只想要一个variables的值,而不是函数中的当前variables?
所以每次我只能直接绑定套接字动作,或者只是在inheritance类中使用=>类实例时才能获得套接字。
感谢您的回应
所以我意识到这个代码有什么问题。 它应该使用closures。 对于closures,咖啡“do”中有一个关键字。 然后,它不会使用path的改变值,而是在每个循环中使用本地值。
固定的_bind函数看起来像这样:
_bind : (socket) -> instance = @ for route in @_routes do (route)-> socket.on route['event'], (data) -> instance[route['action']](@, data)
- 在编写JavaScript库时,将CoffeeScript和Node.js一起使用最好的方法是什么?
- 当我想运行Coffeescript cake命令时,为什么最终运行CakePHP的cake命令?
- 无法将socket.io事件转换为Bacon EventStream
- 自动化与Jenkins的coffeescript编译
- Grunt watch:只编译一个文件不是全部
- coffeescript,玉器,手写笔 – > js,css资产经理? 的node.js
- 读取文件以coffeescript和node.jsstring
- 将范围保持在Async.js中
- 如何在Express中构buildapp.configure