我可以从coffeescript文件中调用Javascript函数吗?
我正在尝试从Coffeescript文件中调用javascript函数,对于我的$(document).ready()
并且它永远不会被调用。
我要调用的函数来自我在html head元素中包含的外部源,就在我的coffeescript文件包含之前,如下所示:
true %>
在我的coffeescript文件(称为someControllerName.coffee)中我这样做:
ready = -> ... call my method $ -> ready
这是正确的方法吗? 我可以在Chrome中看到我的脚本已编译为javascript,我可以在检查器的“网络”标签中看到它。
我正在使用Rails 4,这是我的application.js
//= require jquery //= require jquery.turbolinks //= require jquery_ujs //= require bootstrap //= require turbolinks //= require_tree .
编辑:
如果我通过alert("...");
替换我的方法调用alert("...");
它工作,如果我在$(document).ready()
使用javascript调用我的javascript方法,它工作正常。
EDIT2:
这是我真正的javascript函数:
var ready = function () { $('pre code').each(function (i, e) { hljs.highlightBlock(e) }); }; $(document).ready(ready);
我解决了这个问题:
highlight = -> $("pre code").each (i, e) -> hljs.highlightBlock(e) $(document).on 'ready page:load', -> highlight()
这不符合你的想法:
$ -> ready
在JavaScript中:
$(function() { return ready; });
你的问题是,只是ready
只是对函数的引用,它不像在Ruby中那样是函数调用。 您必须说ready()
来调用该函数,调用括号的函数只有在您使用参数调用函数时才是可选的: fx
和f(x)
相同但f
和f()
不同。
我想你想说:
$ -> ready()
甚至:
$ ready # same as $(ready)