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