返回“未定义”的数组长度

时间:2013-07-26 04:10:41

标签: arrays angularjs angularjs-controller

我正在使用AngularJS构建应用程序。我在我的应用程序中使用Slim处理Web服务。

我有一项服务:

angular.module('MyApp').
factory('MainPage', function($resource,BASE_URL){
    return $resource("my api call", {}, {query: {method:'GET'}, isArray:true});
}).

从Slim我返回一个json响应,如:

$resposedat = array("value1"=>"val1","value2"=>"val2"); 
echo json_encode($resposedat);

在我的控制器中,我写道:

var app = angular.module('MyApp')

app.controller('MainCtrl',function($scope,MainPage,$rootScope){
    $scope.mainpage = MainPage.query();

    console.info($scope.mainpage);
    console.info($scope.mainpage.length);//undefined
});

对于console.info($scope.mainpage)

,我的控制台看起来像这样
  

资源{$ get:function,$ save:function,$ query:function,$ remove:function,$ delete:function ...}

     

value1:“val1”

     

value2:“val2”

我的控制台为undefined

返回console.info($scope.mainpage.length)

我在这做错了什么?

1 个答案:

答案 0 :(得分:2)

MainPage.query()是异步的,因此您的数组不存在,因此在您调用它时没有length属性。

$scope.mainpage一直存在,直到检索到数据为promise。它是一个临时占位符。