ng-Repeat 在 $scope.$watchCollection 中返回 undefined

ng-Repeat returning undefined within $scope.$watchCollection

当我在第5行console.log(result)时,它returns就好了。第 11 行 returns 上的 console.log($scope.notes) 未定义。有什么想法吗?

这是我的控制器:

$scope.$watchCollection = (['parent_id', 'parent_type'], function(){
    $scope.loadNotes = function(){
        $http.get('/api/notes/' + $scope.parent_id + "/" + $scope.parent_type).success(function(result){
            console.log(result);
            $scope.notes = result;
            return result;
        });
    }
    $scope.notes = $scope.loadNotes();
    console.log($scope.notes);
});

因为 $http.get 是异步的,所以第 11 行在第 5 行之前执行,所以那里是未定义的。

异步 我的意思是执行不会等待 $http 到 return 承诺,它只是继续执行到下一行。

您可以通过以下方式 return 承诺,这样代码将等待异步调用完成,然后再继续并定义 $scope.notes

$scope.$watchCollection = (['parent_id', 'parent_type'], function(){
    $scope.loadNotes = function(){
        return $http.get('/api/notes/' + $scope.parent_id + "/" + $scope.parent_type).success(function(result){
            console.log(result);
            //$scope.notes = result;
            return result;
        });
    }
    $scope.loadNotes().then(function(loadedNotes){
        $scope.notes = loadedNotes;
        console.log($scope.notes);
    });

});