繁体   English   中英

我可以从coffeescript文件中调用Javascript函数吗?

[英]Can I call a Javascript function from a coffeescript file?

我正在尝试从Coffeescript文件中为我的$(document).ready()调用javascript函数,但是它从未被调用过。

我想调用的函数来自我的html head元素中包含的外部源,就在我的coffeescript文件包含之前,如下所示:

<script src="external.js"></script>
<%= javascript_include_tag params[:controller], 'data-turbolinks-track' => 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("..."); 它有效,并且如果我在$(document).ready()使用javascript调用我的javascript方法,则可以正常工作。

编辑2:

这是我真正的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()才能调用该函数,仅当您使用以下参数调用函数时,函数括号才是可选的: fxf(x)相同,但ff()不同。

我想你想说:

$ -> ready()

甚至:

$ ready # same as $(ready)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM