我对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}
答案 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