即使在赋值后$scope变量也未定义

$scope variable undefined even after assignment

本文关键字:scope 变量 未定义 赋值      更新时间:2023-09-26

我的一个 Angular 控制器有功能,但我遇到了问题。

在函数开始时,我尝试检查是否提供了出发时间,如果没有提供,我以 HH:mm:ss 格式为其分配当前时间。

但是,当我尝试检查$scope.selectedDepartureTime.DepartureTime的值时,即使在分配后,它仍然未定义。为什么?

$scope.search = function () {
    if (!$scope.selectedDepartureTime.departureTime) {
        var time = new Date();
        var departureTime =
            ("0" + time.getHours()).slice(-2) + ":" +
            ("0" + time.getMinutes()).slice(-2) + ":" +
            ("0" + time.getSeconds()).slice(-2);
        //12:32:15 app.js:80
        console.log(departureTime);
        $scope.selectedDepartureTime.departureTime =
            departureTime;
        //undefined app.js:85
        console.log($scope.selectedDepartureTime.departureTime);
    }
    $http({
        method: 'GET',
        url: '/train-times/journey?departureStation='
        + $scope.selectedDepartureStation.stationName
        + '&destinationStation='
        + $scope.selectedDestinationStation.stationName
        + '&queryTime='
        + $scope.selectedDepartureTime.departureTime,
        data: {}
    }).success(function (result) {
        $scope.journeyResult = result;
    });
    $http({
        method: 'GET',
        url: '/train-times/departure-times?departureStation='
        + $scope.selectedDepartureStation.stationName
        + '&queryTime='
        + $scope.selectedDepartureTime.departureTime,
        data: {}
    }).success(function (result) {
        $scope.otherDepartureTimes = result;
    });
}

数据是从 HTML 表单提交的:

<label for="departAfter">Depart after:</label>
<select id="departAfter"
   ng-model="selectedDepartureTime"
   ng-options="time.departureTime for time in departureTimes"
   ng-init="selectedDepartureTime='undefined'">
</select>

对我来说,这似乎应该有效 - 似乎很简单。

undefined更改为{}

<label for="departAfter">Depart after:</label>
<select id="departAfter"
   ng-model="selectedDepartureTime"
   ng-options="time.departureTime for time in departureTimes"
   ng-init="selectedDepartureTime={}"> <!-- Change undefined to {}-->
</select>