从{$$state: Object}中获取数据的方法是什么?

4

我试图使用工厂从数据库中获取数据。 我的问题是,我不知道如何从工厂返回的对象中获取数据。 当我使用console.log()函数时,这就是我收到的:

>d {$$state: Object}
 $$state: Object
  status: 1
  value: Array[1]
 __proto__: Object
 __proto__: Object

这是我的工厂代码:
application.factory('Database', ['$http', function($http) {
   var databaseFactory = {};
    databaseFactory.get = function(query) {
        return $http.get("getData.php", {params: {'query': query}}, {headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
            .then(function (response) {
                databaseFactory.returnedData = response.data;
                return databaseFactory.returnedData;
            })
    }
    return databaseFactory;
}]);

这是我的控制器代码:

registration.controller('RegistrationController', ['$scope', 'Database', function($scope, Database) {
    $scope.posts = Database.get("SELECT * FROM `group`");
    console.log($scope.posts);
}]);
3个回答

2
它返回一个Promise,你需要这样处理它:
在你的控制器中加入以下代码:
getSomething.getBla().then(function(response) {

    console.log(response.data)

});

更多信息请查看: 'http://andyshora.com/promises-angularjs-explained-as-cartoon.html'


(注:该链接是有关 AngularJS 中 Promise 的卡通解释,建议阅读)

2

你需要从控制器传递一个回调函数,并在收到AJAX响应后在工厂中执行它。您可以更新代码如下。

工厂

application.factory('Database', ['$http', function($http) {
   var databaseFactory = {};
    databaseFactory.get = function(query, callback) {
        return $http.get("getData.php", {params: {'query': query}}, {headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
            .then(function (response) {
                databaseFactory.returnedData = response.data;
                callback(databaseFactory.returnedData);
            })
    }
    return databaseFactory;
}]);

控制器

registration.controller('RegistrationController', ['$scope', 'Database', function($scope, Database) {
    Database.get("SELECT * FROM `group`", function(resp){
           $scope.posts =  resp;
           console.log($scope.posts);
   });

}]);

2
感谢您的帮助 :) :) - confused7

1
这在我的情况下有效:result.$$state.value。
示例代码: 控制器:
promise = getConfigService.getAccount(protocol+hostName+port);
    promise
    .then(
        function (result) {
var baseUrlTemp = result.$$state.value.baseURL;
console.log("BaseURL:"+baseURLTemp)
}

输出: 基本URL:www.oneindia.com


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接