将它放入$ scope后不能使用http响应数组

时间:2015-12-07 12:52:13

标签: javascript angularjs ajax http

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

请让我知道我哪里出错了。一些用于理解目的的代码:

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

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

3 个答案:

答案 0 :(得分:2)

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

result.then(successCallback, errorCallback);

答案 1 :(得分:1)

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

答案 2 :(得分:0)

由于它是异步请求,我不得不通过以下代码处理null:

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