2016-08-15 70 views
1

如何访问CoffeeScript中事件处理程序的参数?如何在CoffeeScript事件处理程序中获取参数

我在Dashing中创建了一个颜色选择器控件(http://dashing.io)。 颜色选择器基于Spectrum(https://bgrins.github.io/spectrum/#events),并使用颜色参数发布onchange事件。

当用户单击调色板中的颜色时,颜色名称/代码由Spectrum颜色选择器小部件在前端生成。

这里的现有ColorPicker的代码是什么样子的摘录:

change: function(color) { 
    color.toHexString(); // i.e. #ff0000 
} 

拾色器的实施指南是在这里: https://bgrins.github.io/spectrum/#events

在我的CoffeeScript文件,我有

$(@node).on 'change', (evt) => @handleChanged evt 

    postState: (newState) -> 
    $.post '/openhab/dispatch', 
     deviceId: @get('device'), 
     command: newState 

    handleChanged: (evt) -> 
    @postState("test") 

我希望能够访问handleChanged函数中的Spectrum颜色选择器的颜色参数,并将其传递给postState函数以代替“测试”占位符。

随意批评 - 当我通常在C工作的嵌入式设备的寄存器级别上使用Coffeescript这种高级Coffeescript,Ruby on Rails环境时,我百分之百地迷失了方向。

+0

除了Pradeep的回答,颜色值由Spectrum窗口小部件在客户端生成。这里是代码: hide:function(color){ color.toHexString(); //#ff0000 } – user4165247

回答

0

不是可以直接在

正如我已经明白这是不可能的。由于资产或咖啡脚本编译器不与rails引擎相关联,所以您可以从应用程序获取变量。

有两种方法可以处理它

  1. 而是在你的行动使用format.html使用format.js给了响应用户,然后在你的action.js.erb文件的写入你的JavaScript可以得到所有变量。
  2. 将应用程序中的变量保存在cookie中,并通过咖啡脚本访问它们。
+0

感谢Pradeep,但颜色变量由客户端的jQuery在Spectrum widget中生成,而不是在rails中生成。 – user4165247

相关问题