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);
});
});
当我在第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);
});
});