gpt4 book ai didi

javascript - 在 for 循环中的 if 内渲染事件

转载 作者:行者123 更新时间:2023-11-27 23:53:41 24 4
gpt4 key购买 nike

我在 Angular 中使用 fullcalendar,并且希望在日历中呈现我的数据(如果它们通过了 if 检查)。

以下是三个略有不同的示例:

没有if语句的for循环:

for (var i = 0; i < response.length; i++) {
$scope.open_Courses.push({
id: $scope.temp[i].id,
title: $scope.temp[i].name,
start: new Date($scope.temp[i].date).getTime(),
editable: true,
className: 'b-l b-2x b-info',
location: $scope.temp[i].location,
info: $scope.temp[i].description
});
//render event to calendar
$('.calendar').fullCalendar('renderEvent', $scope.open_Courses[i], true);
}

带有 if 语句的循环,但只渲染数组中的索引 0:

for (var i = 0; i < response.length; i++) {
if (new Date($scope.temp[i].date).getTime() >= $scope.time) {
$scope.open_Courses.push({
id: $scope.temp[i].id,
title: $scope.temp[i].name,
start: new Date($scope.temp[i].date).getTime(),
editable: true,
className: 'b-l b-2x b-info',
location: $scope.temp[i].location,
info: $scope.temp[i].description
});
//render event to calendar
$('.calendar').fullCalendar('renderEvent', $scope.open_Courses[0], true);
}
}

数组中最后一个带有 i-index 的:

for (var i = 0; i < response.length; i++) {
if (new Date($scope.temp[i].date).getTime() >= $scope.time) {
$scope.open_Courses.push({
id: $scope.temp[i].id,
title: $scope.temp[i].name,
start: new Date($scope.temp[i].date).getTime(),
editable: true,
className: 'b-l b-2x b-info',
location: $scope.temp[i].location,
info: $scope.temp[i].description
});
//render event to calendar
$('.calendar').fullCalendar('renderEvent', $scope.open_Courses[i], true);
}
}

第一个和第二个工作正常,但最后一个(这就是我想要的方式)却不行。它变得未定义并出现错误:

类型错误:无法读取未定义的属性“_id”

对我来说,第二个和第三个例子基本上是相同的,所以怎么会发生这种情况?

最佳答案

在这种情况下,您的变量i在每次循环时都会递增......无论条件如何。仅当条件通过时,您才会推送到 $scope.open_Courses。因此,i 的索引很可能高于 $scope.open_Courses。例如,如果循环索引 (i) 为 5,并且 $scope.open_Courses 的长度为 2,则 $scope.open_Courses[5] 将是未定义的。

如果您想渲染最后一项,则需要传递一个有效的索引:

for (var i = 0; i < response.length; i++) {
if (new Date($scope.temp[i].date).getTime() >= $scope.time) {
$scope.open_Courses.push({
id: $scope.temp[i].id,
title: $scope.temp[i].name,
start: new Date($scope.temp[i].date).getTime(),
editable: true,
className: 'b-l b-2x b-info',
location: $scope.temp[i].location,
info: $scope.temp[i].description
});
//render event to calendar
var len = $scope.open_Courses.length;
$('.calendar').fullCalendar('renderEvent', $scope.open_Courses[len-1], true);
}
}

关于javascript - 在 for 循环中的 if 内渲染事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32459611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com