我在 Angular 中有两个函数调用,第一个在ng-init
事件中使用它调用:
ng-init="dateCall()"
功能是:
$scope.dateCall = function() {
var date, endDate;
$scope.start_date = $filter('date')(new Date(), 'MM/dd/yyyy');
date = new Date($scope.start_date);
$scope.season = $scope.fundraiser_seasons.find(function(e) {
return Date.create(e.start_date) <= date && date <= Date.create(e.end_date);
});
endDate = $filter('date')(new Date($scope.season.end_date), 'MM/dd/yyyy');
return $scope.end_date = endDate;
};
由于某种原因,不会返回$scope.season
的值。但是,每当我更改$scope.start_date.
$scope.$watch("start_date", function(start_date) {
var date, endDate;
if ($scope.fundraiser_seasons.length === 0) {
return;
}
date = new Date(start_date);
$scope.season = $scope.fundraiser_seasons.find(function(e) {
return Date.create(e.start_date) <= date && date <= Date.create(e.end_date);
});
endDate = $filter('date')(new Date($scope.season.end_date), 'MM/dd/yyyy');
return $scope.end_date = endDate;
});
我一直在对此进行故障排除,无法让它工作,我觉得我必须错过一些愚蠢的东西。基本上我只是希望它根据应用程序加载的今天返回end_date
- 我知道该值的返回在$watch
函数中正常工作。提前谢谢。
答案 0 :(得分:1)
在NgInit事件中使用时,$scope.fundraiser_seasons
中很可能有一个空数组。
而不是将相同的逻辑存储在两个单独的函数重构中,代码使用相同的逻辑,如下所示
$scope.dateCall = function() {
$scope.start_date = $filter('date')(new Date(), 'MM/dd/yyyy');
var date = new Date($scope.start_date);
calcDate(date);
};
$scope.$watch("start_date", function(start_date) {
var date = new Date(start_date);
calcDate(date);
});
var calcDate = function(date){
if ($scope.fundraiser_seasons.length === 0) {
return;
}
$scope.season = $scope.fundraiser_seasons.find(function(e) {
return Date.create(e.start_date) <= date && date <= Date.create(e.end_date);
});
var endDate = $filter('date')(new Date($scope.season.end_date), 'MM/dd/yyyy');
return $scope.end_date = endDate;
};
答案 1 :(得分:0)
如果你想使用ng-init的返回值,你可以分配它
ng-init="result=dateCall()"
我不确定$ watch的返回值是什么意思。 回到谁?它毫无意义。