所以我的控制器有3个以下的JS文件:
movie.js.coffeee
application.js
facebook.js.coffee.erb
sessions.js.coffee
users.js.coffee
出于某种原因,当我在我的users.js.coffee或者facebook.js.coffee.erb(或者任何其他文件)中将JS代码放入$(document).ready中时,它不会火。即我在users.js.coffee中添加一个简单的警报:
$ ->
alert 'hello'
但这不会执行。
我还有代码在facebook.js.coffee.erb中使用Facebook的JavaScript SDK,但是当我在$(document).ready()中放置代码时,所有代码都不会执行。
我不得不求助于把我所有的JS代码都放在movie.js.coffee文件中,而且一切都在那里工作。在该文件中,我有以下代码:
$ ->
#Home page login dropdown
$('.dropdown-toggle').dropdown()
$('.dropdown input, .dropdown label').click (e) ->
e.stopPropagation()
#Users edit page
$('.hint a').tooltip()
#Movie show page
$('#movie-tabs a:first').tab('show')
$('#movie-info').stickyMojo({footerID: '#footer', contentID: '#movie-description'})
我的application.js文件如下所示:
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_self
//= require_tree .
这很烦人,不知道为什么会发生这种情况?当JS代码没有包装在其他文件中的$(document).ready中时,它可以正常工作,但我最好还是避免这样做。
答案 0 :(得分:0)
$ ->
'alert hello'
你刚刚在那里放了一个字符串,而不是拨打alert
,所以这不会做任何事情。
$ ->
alert('hello')
这应该有效。
答案 1 :(得分:0)
我记得刚才有这种问题。我不知道它为什么会发生,但我删除了咖啡文件并再次创建它们并且它有效。检查你的缩进,因为CoffeeScript的语法基于它。
此外,您应该使用jQuery ->
而不是$ ->
,这样如果您可能在同一个项目中使用任何其他JS框架,就不会感到困惑。