[英]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()
才能调用该函数,仅当您使用以下参数调用函数时,函数括号才是可选的: fx
和f(x)
相同,但f
和f()
不同。
我想你想说:
$ -> ready()
甚至:
$ ready # same as $(ready)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.