1

我正在使用 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…}

值1:“val1”

值 2:“值 2”

我的控制台undefined返回console.info($scope.mainpage.length)

我在这里做错了什么?

4

1 回答 1

2

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

在检索到数据之前,该值$scope.mainpage保持不变,称为 a promise。它用作临时占位符。

于 2013-07-26T12:44:13.280 回答