如何从$$状态对象获取数据

$ scope.packgs总是作为一个$$状态对象结束,但如果我控制台响应它是正确的数组对象,我期待着,我做错了什么?

我的控制器

routerApp.controller('PortalController', ['$scope', '$state', 'UserService', 'PackageService', function($scope, $state, UserService, PackageService) { $scope.isLoggedIn = UserService.isLoggedIn; $scope.currentUser = UserService.currentUser; $scope.logOut = UserService.logOut; $scope.packgs = PackageService.get($scope.currentUser()).success(function(response){ return response; }); /*if($scope.packgs === null){ $scope.errorMessage = "You are not tracking any packages, add some to your portal!"; }*/ console.log($scope.packgs); }]); 

我的工厂

 packages.get = function(info){ return $http.get('/api/packages?owner='+info).success(function(data){ packages.data = data; }); }; 

在目前的情况下,你正在分配$scope.packgs来承诺$scope.packgs返回为什么你在对象中获得$$state (这只是一个承诺对象)。 你也无法获得PackageService.getcallback函数之外返回的数据,因为你期望在代码中使用console.log($ scope.packgs)获取数据(asynchronous操作不会像你想象的那样同步工作)。

你已经实现了packages.get方法,永远不会像控制器方法中那样返回数据。 但是,在$http调用的.success ,您正在设置服务datavariables中的值。

.success ,您必须在控制台中出现错误,因为您正在尝试.success方法,由PackageService.get返回,因为promise中没有.success方法。

 PackageService.get($scope.currentUser()).then(function(data){ $scope.packgs = PackageService.data; //assign data when ajax succeeded }); 

但是,我build议你去做比这更好的方法

如果你想从你的PackageService get方法返回数据,从promise返回它,但是在这种情况下,你需要使用.success而不是.success (callback没有能力返回数据)将遵循promise链。

服务

 packages.get = function(info){ //used .then over $http.get to follow promise chain pattern return $http.get('/api/packages?owner='+info).then(function(response){ packages.data = response.data; return data; }); //or follow below one which is short and sweet //return $http.get('/api/packages?owner='+info); }; 

调节器

 PackageService.get($scope.currentUser()).then(function(response){ $scope.packgs = response.data; //received data returned by promise console.log($scope.packgs); //console will give data out here only });