javascript - date.getDate() är inte en funktion. (I 'date.getDate()', 'date.getDate()' är odefinierad) FullCalendar i Ionic 3
Jag kodar på ett Ionic 3-projekt där jag använder ett FullCalendar-plugin för att visa ett kalendergränssnitt. Jag har ett problem med denna kod i sidans modul när jag försöker ändra bakgrunden för en enskild dag i kalendern. Jag har använt FullCalendars dayRender-funktion.
$('#calendar').fullCalendar({
dayRender: function (date, cell) {
var today = new Date('2017-09-11T00:40Z')
if (date.getDate() == today.getDate()) {
this.cell.css("background-color", "red");
}
},
});
Jag har detta körfel i utdata:
date.getDate() är inte en funktion. (I 'date.getDate()', 'date.getDate()' är odefinierad) FullCalendar i Ionic 3
så jag förstår inte varför, eftersom date är ett Date-objekt som redan var definierat i FullCalendar-biblioteket.
Några lösningar?
ps: Förlåt för min dåliga engelska.
Svar #1
Dokumentationen av dayRender-callbacken på https://fullcalendar.io/docs/v3/dayRender säger
dateär ögonblicket för den givna dagen.
Så date i din kod är ett momentJS-objekt, inte ett Date-objekt. Det är därför metoden getDate inte finns på det. Det vore bättre att skapa today som ett momentJS-objekt också, och sedan kan du jämföra dem direkt:
$('#calendar').fullCalendar({
dayRender: function (date, cell) {
var today = moment('2017-09-11T00:00Z');
if (date.isSame(today, "day")) {
cell.css("background-color", "red");
}
},
//...
});
För mer detaljerad information om koden jag har skrivit, se http://momentjs.com/docs/#/parsing/string/ för detaljer om datum som momentkonstruktor kan tolka, och http://momentjs.com/docs/#/query/is-same/ för detaljer om datumsjämförelsemetoden.
Du kan se ett fungerande exempel på ovanstående här: http://jsfiddle.net/sbxpv25p/22/
