Javascript 将http响应数组放入$scope后无法使用它

Javascript 将http响应数组放入$scope后无法使用它,javascript,angularjs,ajax,http,Javascript,Angularjs,Ajax,Http,我在应用程序中使用AngularJs。我打了一个http电话并得到了响应。响应包含一个数组,我将其作为result放入$scope对象中。我在某个属性上放置了一个watch,并尝试访问$scope对象中存储的对象。如果我打印结果对象,我会看到它包含数组,但当我尝试使用数组属性(如长度时,它会抛出一个错误。我也无法使用其他数组方法,例如results.data[0] 请告诉我哪里出了问题。一些用于理解目的的代码: var processResponse = function (result) {

我在应用程序中使用AngularJs。我打了一个
http
电话并得到了响应。响应包含一个数组,我将其作为
result
放入
$scope
对象中。我在某个属性上放置了一个
watch
,并尝试访问$scope对象中存储的对象。如果我打印
结果
对象,我会看到它包含数组,但当我尝试使用数组属性(如
长度
时,它会抛出一个错误。我也无法使用其他数组方法,例如
results.data[0]

请告诉我哪里出了问题。一些用于理解目的的代码:

var processResponse = function (result) {
          $scope.results = result.data;
      }

$scope.$watch('attribute', function(newVal) {
        console.log($scope.results.length)
      });

由于是异步请求,我必须通过以下代码处理null:

if ($scope.results && $scope.results.data){
    console.log($scope.results.data.length);
}

由于是异步请求,我必须通过以下代码处理null:

if ($scope.results && $scope.results.data){
    console.log($scope.results.data.length);
}

这取决于你怎么称呼它。如果结果是承诺,您可以尝试这样做:


result.then(successCallback,errorCallback)

取决于您如何称呼它。如果结果是承诺,您可以尝试这样做:


result.then(successCallback,errorCallback)

只需尝试声明/init$scope.results=[];在控制器的顶部。
然后方法长度无法崩溃;)

只需尝试声明/init$scope.results=[];在控制器的顶部。
然后方法长度无法崩溃;)

你能给我看看航海日志吗。因为在我尝试打印长度时它是一个ajax和异步的,所以结果还没有添加到范围中。因此它抛出了打字机错误。你能显示日志吗。因为在我尝试打印长度时它是一个ajax和异步的,所以结果还没有添加到范围中。因此,这是抛出打字机错误。我认为这是一个优雅的解决方案,我将使用。谢谢,我认为这是一个优雅的解决方案,我将使用。谢谢