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

时间:2015-06-23 16:29:04

标签: angularjs ng-repeat ng-init

当我第5行的console.log(结果)时,它返回就好了。第11行的console.log($ scope.notes)返回undefined。有什么想法吗?

这是我的控制器:

$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);
});

2 个答案:

答案 0 :(得分:2)

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

通过异步,我的意思是执行不等待$ http返回promise,它只是继续执行到下一行。

答案 1 :(得分:0)

这是一种可以返回promise的方法,以便代码在继续前进并定义$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);
    });

});