我对Fullcalendar有一个奇怪的问题。日历未完全呈现。最初只呈现标题,我必须单击任何标题按钮才能使日历呈现日期和事件。
HTML+Razor:
<div class="row">
<div class="col-xs-12 col-md-3">
@Html.DropDownListFor(m => m.User, @Model.UsersDropdown, new { id = "calendar_uid", @class = "form-control" })
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div id="calendar" data-lang="@Request.UserLanguages[0]"></div>
</div>
</div>
JS:
$("#calendar").fullCalendar({
header: {
left: '',
center: 'title',
right: 'today prev,next'
},
buttonIcons: {
prev: 'left-single-arrow',
next: 'right-single-arrow',
prevYear: 'left-double-arrow',
nextYear: 'right-double-arrow'
},
events: {
url: SITE_ROOT + '/Calendar/Feed',
type: 'POST',
data: {
uid: $('#calendar_uid').val()
}
},
});
$("#calendar_uid").change(function () {
$("#calendar").fullCalendar('removeEventSource', SITE_ROOT + '/Calendar/Feed');
var newSource = {
url: SITE_ROOT + '/Calendar/Feed',
type: 'POST',
data: {
uid: this.value
}
};
$("#calendar").fullCalendar('addEventSource', newSource);
});
更奇怪的是,如果我从firebug控制台调用$("#calendar").fullCalendar('render');
,日历将被完全渲染。但是,如果我在从脚本初始化之后调用它,则不会发生任何事情。我还查看了Firebug的网络选项卡。当日历第一次呈现时,不会向服务器发送任何请求。当我点击任何标题按钮时,请求就会被发送。之后一切都很好。
我还试着复制这把小提琴,看看它在当地是否有效。我仍然有同样的问题。我需要单击任何按钮以使日历完全呈现。
最后但并非最不重要的是,我的脚本包括(在我的页面底部):
<script src="/C5.WebApp/Scripts/jquery-1.11.1.js"></script>
<script src="/C5.WebApp/Scripts/bootstrap.js"></script>
<script src="/C5.WebApp/Scripts/jquery.hideseek.js"></script>
<script src="/C5.WebApp/Scripts/moment-with-locales.js"></script>
<script src="/C5.WebApp/Scripts/fullcalendar.js"></script>
<script>
moment().format();
</script>
<script src="/C5.WebApp/Scripts/app_calendar.js"></script>
<script src="/C5.WebApp/Scripts/app_contacts.js"></script>
<script src="/C5.WebApp/Scripts/app_newPhone.js"></script>
<script src="/C5.WebApp/Scripts/app_newEmail.js"></script>
<script src="/C5.WebApp/Scripts/app_newAppointment.js"></script>
<script src="/C5.WebApp/Scripts/app_newActivity.js"></script>
<script src="/C5.WebApp/Scripts/application.js"></script>
在反复阅读文档后,我发现了这个
请注意,此示例在显示任何选项卡时调用render,而不仅仅是日历所在的选项卡。这是可以的,因为FullCalendar足够智能,只能呈现用户可见的日历
问题是,我的日历最初是隐藏的,我希望在通过javascript删除hidden
类时呈现它。