【问题标题】:How to get parameter in CoffeeScript event handler如何在 CoffeeScript 事件处理程序中获取参数
【发布时间】:2016-12-21 07:29:24
【问题描述】:

如何在 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

在我的咖啡脚本文件中,我有

$(@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 语言工作。

【问题讨论】:

  • 对 Pradeep 的进一步回答,颜色值是由 Spectrum 小部件在客户端生成的。这是代码:隐藏:函数(颜色){ color.toHexString(); // #ff0000 }

标签: javascript jquery ruby-on-rails coffeescript


【解决方案1】:

不可能直接

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

有两种方法可以处理

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

【讨论】:

  • 感谢 Pradeep,但是颜色变量是由 Spectrum 小部件在客户端的 jQuery 中生成的,而不是在 rails 中生成的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多