如何在CoffeeScript事件处理程序中获取参数

时间:2016-08-15 04:09:22

标签: javascript jquery ruby-on-rails coffeescript

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

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

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

以下是现有颜色选择器代码的摘录:

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函数来代替“test”占位符。

随意批评 - 对于这个高级Coffeescript,Ruby on Rails环境,我100%迷失了,因为我通常在C中工作,在嵌入式设备上注册级别。

1 个答案:

答案 0 :(得分:0)

不可能直接

据我了解,这是不可能的。因为资产或咖啡脚本编译器与rails引擎没有关联,因此您可以从应用程序中获取变量。

有两种方法可以处理

  1. 在您的操作中使用format.js而不是使用format.html来回复用户,然后在您的action.js.erb文件中编写您的javascript以获取所有变量。
  2. 在Cookie中保存应用程序中的变量并以咖啡脚本访问它们。