2016-08-15 82 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

相關問題