Я хочу знать, какой первый день и последний день основного месяца просматривается в полном календаре.

Вот соответствующий вид месяца:

enter image description here

     events: function (start, end, timezone, callback) { //custom events function to be called every time the view changes
          alert (start.format());
          alert (end.format());
     },

Когда я запускаю этот код в этом месяце (апрель 2017 года), я получаю: start.format () = 2017-03-26 end.format () = 2017-05-07 и мне бы хотелось получить следующие даты: start: 2017-04-01 конец: 2017-04-30

Есть ли способ для меня, чтобы получить эти даты внутри функции события?

Большое спасибо

P.s

Я не хотел бы использовать «showNonCurrentDates: false» вариант

4
codingnighter2000 24 Апр 2017 в 13:36

2 ответа

Лучший ответ

Нет прямого способа получить это значение с помощью обратного вызова «events», но вы можете использовать слегка хитрый обходной путь:

Обратный вызов viewRender предоставляет вам доступ к объекту «view» текущего представления, который содержит свойства intervalStart и intervalEnd (см. https://fullcalendar.io/docs/views/View_Object/ ), которые относятся к интервалу, который пытается представить представление. В представлении месяца это будет начало и конец месяца. Если вы записываете их в переменные с большей областью действия, чем в вашем календаре, вы можете повторно использовать их в обратных вызовах events и / или eventsAfterAllRender по мере необходимости.

var intervalStart, intervalEnd; //variables with higher scope level

$('#calendar').fullCalendar({
   //...your options here...
    viewRender: function (view, element)
    {
        intervalStart = view.intervalStart;
        intervalEnd = view.intervalEnd;
    },
    events: function(start, end, timezone, callback) {
        console.log(intervalStart.format("YYYY-MM-DD"));
        console.log(intervalEnd.format("YYYY-MM-DD"));
        //...etc
    }
});

Обратите внимание, что intervalEnd является эксклюзивным , поэтому, если месяц апрель, intervalEnd будет указан как 1 мая.

Однако, продемонстрировав это, кажется, лучше использовать встроенную опцию showNonCurrentDates:false, как и в предыдущем вопросе.

8
ADyson 24 Апр 2017 в 13:50

Добавьте этот параметр showNonCurrentDates: false,. При этом значении даты, не принадлежащие текущему месяцу, не будут отображаться. Из ваших обратных вызовов событий первый день текущего месяца и первый день следующего месяца будут отображаться как start и end соответственно

 $('#calendarLoansByRequestDate').fullCalendar({
            // Other settings
            showNonCurrentDates: false,
            events: function (start, end, timezone, callback) { //custom events function to be called every time the view changes
                alert(start.format());
                alert(end.format());
            }
 });
2
Kihats 7 Мар 2018 в 11:12