我很抱歉,如果这张贴在其他地方,但我不确定如何对这个问题进行搜索。
基本上,我fullcalendar.js
坐在app/assets/javascripts/
。在我的application.js
文件中(当然在同一个文件夹中)我有以下内容......
//= require jquery
//= require jquery_ujs
//= require foundation
//= require_tree .
因此,正如预期的那样,fullcalender.js
会在资产编制过程中被清除,最终会在application.js
中提供给用户。
当我尝试引用fullcalendar.js
中定义的函数(并在编译资产后在application.js
中定义)时出现问题,它会在js控制台中引发错误,指出TypeError: $(...).fullCalendar is not a function
萤火虫,当然还有完整的日历无法呈现。
但是,现在,如果在拉入所有其他脚本和样式表之后在布局文件中包含<%= javascript_include_tag "fullcalendar.js" %>
,它将按预期工作。
令人困惑,我查看了每个文件中的js并对它们进行了比较,看不出有什么区别。资产管道是否有一些我不知道的事情,或者这是一个奇怪的DOM问题?我现在还不知道。
供参考,以下是在网站的网页来源中链接到的application.js
和fullcalendar.js
的内容。我只包括每个的相关完整日历部分,因为如果我包含所有内容,它对于gist或pastebin来说太大了。
令我感到困惑的是,两个来源都来自同一个文件,一个直接链接到另一个,另一个流经资产管道流程。
application.js
- http://pastebin.com/byyNErB8
fullcalendar.js
- http://pastebin.com/k4p29YmP
任何见解或帮助都会非常感激。
答案 0 :(得分:3)
可能是依赖错误。我建议你为这样的lib使用更好的练习。
将fullcalendar脚本放入vendor/assets/javascripts
在树之前以及jquery之后以及它所依赖的任何其他lib之后,在application.js中手动需要此脚本。
/=require 'fullcalendar`
添加强>
检查标头中加载的Javascript文件,如果application.js是最后一个,则存在依赖性错误。在调用它之前,lib必须在那里。