【发布时间】:2015-09-10 01:06:36
【问题描述】:
我正在尝试从我的 Rails 4 视图代码中调用分类的 coffeescript/javascript 函数。它告诉我在页面加载时创建并在 document.ready 中使用的类变量不再存在。
咖啡脚本:
class App
reload_calendar: ->
source = new Array
viewable_calendars = $('input:checkbox:checked.visable_calendars').map(->
@value
).get().join(',')
calendar_url = '/events.json'
new_event_link = '#{new_event_path}'
$('#calendar').fullCalendar
dayClick: (date, allDay, jsEvent, view) ->
document.location.href = new_event_link + '?start_date=' + date
return
header:
left: 'prev,today,next'
center: 'title'
right: 'month,agendaWeek,agendaDay'
selectable: true
selectHelper: true
editable: false
ignoreTimezone: false
select: @select
eventClick: @eventClick
eventDrop: @eventDropOrResize
eventSources: [ {
url: calendar_url
data:
custom_param1: 'something'
custom_param2: 'somethingelse'
error: ->
alert 'there was an error while fetching events!'
return
} ]
eventResize: @eventDropOrResize
timeFormat: 'h:mmtt{ - h:mmtt} '
return
app = new App
$(document).ready ->
app.reload_calendar()
$('#calendar-color').minicolors()
部分:
<ul>
<% @calendars.each do |c| %>
<li>
<span style="background-color: <%= c.color %>;">
<%= check_box_tag 'show_calendar_'+c.id.to_s, value=c.id.to_s, checked=true, :onchange => "app.reload_calendar()", :class => "visible_calendars" %>
</span>
<%= c.name %>
<%= link_to 'x', calendar_path(c), :confirm => "Are you sure you want to remove the calendar?", :method => :delete %></li>
<% end %>
这可以很好地加载日历(在咖啡脚本的末尾使用 app.reload_calendar),但在通过单击或取消单击复选框触发时失败并出现错误 Uncaught ReferenceError: app is not defined。
【问题讨论】:
-
你试试
window.app = new App? -
谢谢,成功了。 :)
标签: ruby-on-rails coffeescript