【问题标题】:How to get data from {$$state: Object}?如何从 {$$state: Object} 获取数据?
【发布时间】:2016-08-29 05:25:12
【问题描述】:

我尝试使用工厂从数据库中获取数据。 我有一个问题,因为我不知道如何从工厂返回的对象中获取数据。这是我使用 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);
}]);

【问题讨论】:

    标签: javascript ajax angularjs


    【解决方案1】:

    您应该从控制器传递一个回调函数,并在收到 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】:

    它正在返回一个承诺,你需要这样处理它

    在你的控制器中添加这个:

    getSomething.getBla().then(function(response) {
    
        console.log(response.data)
    
    });
    

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

    【讨论】:

      【解决方案3】:

      这在我的情况下有效:result.$$state.value。

      示例代码: 控制器:

      promise = getConfigService.getAccount(protocol+hostName+port);
          promise
          .then(
              function (result) {
      var baseUrlTemp = result.$$state.value.baseURL;
      console.log("BaseURL:"+baseURLTemp)
      }
      

      输出: 基本网址:www.oneindia.com

      【讨论】:

        猜你喜欢
        • 2016-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-11
        • 2016-01-13
        • 1970-01-01
        相关资源
        最近更新 更多