coffeescript - 页面加载后运行

时间:2014-01-28 06:22:12

标签: coffeescript

我对CoffeScript很陌生,想要编辑我发现的一些代码。现在,它在加载DOM时正确运行此功能:

jQuery ->   
 $('#s3-uploader').S3Uploader

如何重写它,使其仅在页面加载后运行?我需要等待,以便我可以获得正确的实例变量:

(on page load) ->   
 $('#s3-uploader').S3Uploader
    additional_data: {project_id: @project.id, step_id: @step.id, user_id: current_user.id} 

4 个答案:

答案 0 :(得分:2)

对于rails,当这里的所有其他答案都没有时,这对我有用:

$(document).on "turbolinks:load", ->

答案 1 :(得分:1)

这是一个很老的问题,毫无疑问你已经找到了解决方案。但是为了来自谷歌的任何人的利益....

您的问题也不是100%明确,但您似乎使用的是Ruby on Rails等框架。

如果是这样,那么正确的答案当然是你不应该从Coffeescript访问实例变量。资产管道中的Coffeescript文件在部署期间编译,并且不了解控制器或实例变量。

正确的方法是将这些变量分配给DOM中的数据属性,然后引用数据属性。

#view.html.erb
<div id="uploader" data-project_id="<%= @project.id %>" ></div>

#script.coffee.js
(on page load) ->   
 $('#s3-uploader').S3Uploader
    additional_data: {project_id: $('#uploader').data('project_id') .... }

答案 2 :(得分:0)

您正在寻找$(document).ready事件处理程序。

$(document).ready ->
  $('#s3-uploader').S3Uploader

答案 3 :(得分:0)

checkVariable = ->
  if variableLoaded == true
    # here is your next action 
  else
  return

setTimeout 'checkVariable()', 1000