我正在尝试做看起来很简单的事情,但由于某种原因,我无法做到这一点。我想将单击事件添加到我的tasks.js文件中的链接,如下所示:
$ ->
$('.cancel_task').click ->
$('#task_form').toggle
这将呈现为:
(function() {
$(function() {
return $('.cancel_task').click(function() {
return $('#task_form').toggle;
});
});
}).call(this);
我想要的是:
$('.cancel_task').click(function()
{
$('#task_form').toggle();
});
我如何使用coffescript和rails 3.1堆栈来实现这一点?
发布于 2011-10-06 09:02:10
咖啡应该将你所做的一切都包装在一个有限的范围内,这样你就不会用全局变量来填充世界。这很有用,除非你有,否则不要忽略它。在顶层,您可以使用this.something = "value"
导出。
现在你上面的代码不能工作了,因为当没有参数时,函数调用需要一个paren。这将使两个snip-its在功能上相同。函数是JavaScript中的变量,所以它只是假设您想返回该函数,而不是不带括号的结果。
$ ->
$('.cancel_task').click ->
$('#task_form').toggle()
最后,Coffee函数总是返回函数的最后一个值。这就是它的工作原理。所以不用担心return
语句,你可以忽略结果。
发布于 2011-10-06 08:41:30
您发布的第二个代码片段是来自coffee
的正确输出,并且您发布的第二个和最后一个代码片段(实际上)在功能上是等效的。如果您愿意,您可以使用coffee
的--bare
选项(文档中有)来摆脱顶级闭包,但除此之外,您不应该担心CoffeeScript的输出,除非它会给您带来问题。
https://stackoverflow.com/questions/7669246
复制相似问题