fullCalendar viewRender的参数view 和viewDidMount 的参数view有啥区别
时间: 2024-04-28 17:23:15 浏览: 165
`viewRender`和`viewDidMount`都是fullCalendar的回调函数,它们都会在日历视图发生变化时被调用。它们的区别在于:
- `viewRender`:在切换视图(比如从月视图切换到周视图)或者导航到不同的日期时都会被调用。它的参数`view`是一个包含当前视图信息的对象,包括当前视图的名称、日期范围、日期格子的元素等等。`viewRender`可以用来更新视图的某些部分,比如在日历头部添加额外的按钮或者自定义导航栏等。
- `viewDidMount`:在初次渲染视图时被调用,它的参数`view`是一个包含当前视图信息的对象,和`viewRender`的参数`view`是一样的。`viewDidMount`可以用来初始化某些视图相关的组件或者数据,比如在月视图中加载每个日期的事件列表等。
总的来说,`viewRender`和`viewDidMount`都是用来响应日历视图的变化的回调函数,它们的区别在于`viewRender`会在每次切换视图或者导航时被调用,而`viewDidMount`只会在初次渲染视图时被调用。
相关问题
fullCalendar 月视图下,viewRender自动定位到今天所在行
可以通过以下代码实现:
```javascript
$('#calendar').fullCalendar({
viewRender: function(view, element){
// 获取今天的日期
var today = moment().format('YYYY-MM-DD');
// 获取所有日期元素
var allDayCells = $('.fc-day');
// 遍历所有日期元素
for(var i=0; i<allDayCells.length; i++){
var cell = allDayCells[i];
// 如果该日期元素包含今天的日期,则滚动到该元素所在行
if($(cell).data('date') == today){
var row = $(cell).closest('.fc-row');
var top = row.position().top;
$('.fc-scroller').scrollTop(top);
break;
}
}
}
});
```
在 `viewRender` 回调函数中,首先获取今天的日期,然后遍历所有日期元素,找到包含今天日期的元素所在行,最后通过设置 `.fc-scroller` 的 scrollTop 属性实现自动滚动到该行。
使用fullCalendar的gotoDate()方法和getDate()方法结合viewRender起来实现自动定位到今天所在行的效果 完整代码
完整代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/fullcalendar.min.css' />
<script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/fullcalendar.min.js'></script>
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
viewRender: function(view, element){
// 获取今天的日期
var today = moment().format('YYYY-MM-DD');
// 如果当前视图不是月视图,直接返回
if(view.name != 'month'){
return;
}
// 跳转到今天的日期
$('#calendar').fullCalendar('gotoDate', today);
// 获取今天所在的日期元素
var todayCell = $('.fc-day[data-date="' + today + '"]');
// 获取今天所在的行
var row = todayCell.closest('.fc-row');
// 滚动到行的位置
var top = row.position().top;
$('.fc-scroller').scrollTop(top);
}
});
});
</script>
<style>
body {
margin: 40px 10px;
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}
#calendar {
max-width: 900px;
margin: 0 auto;
}
</style>
</head>
<body>
<div id='calendar'></div>
</body>
</html>
```
在 `viewRender` 回调函数中,通过 `gotoDate` 方法将当前视图跳转到今天的日期。然后通过 `getDate` 方法获取今天所在的日期元素,再通过 `closest` 方法找到该元素所在的行。最后通过设置 `.fc-scroller` 的 scrollTop 属性实现自动滚动到该行。这种方法比之前的方法更加简洁和易于理解。
阅读全文