könnte mir jemand erklären, warum StartDate und EndDate sind nicht im Umfang in Callback an Filterfunktion übergeben.Lexikalischer Umfang der Callback-Funktion
var events = [],
eventsDataSource = [],
statusChstatusChanges = [],
statusChangesDataSource = [];
function filterData() {
var startDate = $('#start-date').data("kendoDatePicker").value();
var endDate = $('#end-date').data("kendoDatePicker").value();
events = eventsDataSource.filter(function (item) {
debugger;
});
statusChanges = statusChangesDataSource.filter(function (item) {
debugger;
});
}
wenn ich Code änderte, was unten funktioniert hat. StarDate und EndDate sind im Umfang. Ist der lexikalische Umfang der Callbacks/Inline-Funktion anders angelegt als die Funktionsdeklarationen?
function filterData() {
var startDate = $('#start-date').data("kendoDatePicker").value();
var endDate = $('#end-date').data("kendoDatePicker").value();
function dateIsBetweenStartAndEnd(item) {
return new Date(item.Date) >= new Date(startDate) && new Date(item.Date) <= new Date(endDate);
}
events = eventsDataSource.filter(dateIsBetweenStartAndEnd);
statusChanges = statusChangesDataSource.filter(dateIsBetweenStartAndEnd);
}
Vielleicht, aber es ist nur eine Vermutung, weil Sie 'events'first (außerhalb' filterData') deklarieren und zuweisen, und später in 'filterData' deklarieren Sie' startDate' und 'endDate'. Es könnte ein Problem mit dem Heben sein? Versuchen Sie, die 'Ereignisse' zu deklarieren, in denen Sie sie verwenden, innerhalb der 'filterData'-Funktion – Pimmol