【发布时间】:2014-06-01 03:26:01
【问题描述】:
我正在查看how to use javascript in ROR. 上的基本指南 我熟悉 javascipt(和 jquery),但不熟悉咖啡脚本。
该指南非常简单。我只是想念我应该把咖啡脚本放在哪里让它工作。
我正在尝试制作
paintIt = (element, backgroundColor, textColor) ->
element.style.backgroundColor = backgroundColor
if textColor?
element.style.color = textColor
功能工作。
我放了
<a href="#" onclick="paintIt(this, '#990000')">Paint it red</a>
在我的分隔线中。还有我的 \assets\javascripts\pages.js.coffee 中的代码(尽管我也尝试将基本的 javascript 放在 application.js 中) 然后我运行服务器,当我点击链接时没有任何反应。
我假设我需要编译咖啡脚本并可能将其链接到页面但我不知道如何执行此操作。该指南对此只字未提,我不知道要寻找什么才能使我的脚本正常工作
我想正确设置咖啡脚本,以便它在我的页面中工作(我不知道是否将所有功能设为全局是要走的路,但我假设它不是)
按照 cmets 中的建议,我通过使用 window.paintIt = 使其全局化,从而使 paintIt 功能正常工作。
它有一种奇怪的效果,即只切换背景颜色一秒钟,然后将其恢复为透明背景。
如果你们需要更多信息,我可以提供我的文件的其他内容。
【问题讨论】:
-
CoffeeScript 将所有内容包装在一个自调用函数中,以防止范围泄漏。如果您想将
paintIt放在全局范围内,则必须手动将其放在那里:window.paintIt = ...或@paintIt = ...。 -
感谢这项工作,但在 ROR 中设置咖啡脚本的正确方法是什么?此外,只有在元素处于活动状态时才改变颜色有一个奇怪的效果(一旦我松开鼠标按钮,背景颜色就会切换回来)这不是我理解这段代码应该如何工作的方式......
-
通常你会更像jsfiddle.net/ambiguous/4tLrs 那样做,
onclick属性有点像石器时代。 -
啊,它不起作用。我尝试在您的代码之前使用 jQuery -> 但它没有修复它。 :( 还有一种方法可以在不使函数全局化的情况下使用咖啡脚本吗?
-
是的,不要使用
onclick属性,你不需要全局的东西。 “不起作用”是什么意思?
标签: javascript ruby-on-rails-4 coffeescript