返回结果给父函数

Return result to parent function

本文关键字:函数 结果 返回      更新时间:2023-09-26

我在这里一直很紧张。我正在使用离子自动完成,并希望与工厂拉数据。

My Factory…

myApp.factory('items', function($http){
   return {
      list: function(query,callback){
        $http.get('http://192.168.100.100/myApp/products/' + query).success(callback)
        }
        };
        });

获取数据我使用…

   items.list(function(items) {
      $scope.items = items;
    });

自动完成请求数据的演示,如..

  $scope.getTestItems = function (query) {
                    return {
                        items: [
                            {id: "1", name: query + "1", view: "view: " + query + "1"},
                            {id: "2", name: query + "2", view: "view: " + query + "2"},
                            {id: "3", name: query + "3", view: "view: " + query + "3"}]
                    };
                };

所以我认为这是一个可行的解决方案。

   $scope.getTestItems = items.list(query,function(items)
        {   
        console.log(items);
        return items;
        }
        )

,但显然不是。

   $scope.getTestItems = function(query)
   {
   items.list(query,function(items)
        {   
        console.log(items);
        return items;
        }
        )
    }

这确实给了我一个结果控制台,但这不会返回到getTestItems

根据文档(假设我在这里有正确的库),您可以返回一个promise

myApp.factory('items', function($http){
    return {
        list: function(query) {
            return $http.get(... + query).then(function(res) {
                return res.data; // unwrap the response data
                // see the "Returns" section at https://docs.angularjs.org/api/ng/service/$http#usage
            });
        }
    };
});

和控制器

$scope.getTestItems = function(query) {
    return items.list(query);
};

这个怎么样

工厂

 list: function(query,callback){
    return $http.get('http://192.168.100.100/myApp/products/' + query)
 }

这样你就从工厂返回了承诺。

控制器

$scope.getTestItems = function(query){
  items.list(query).then(function(items){   
    console.log(items);
  });
}

你可以试试这个

myApp.factory('items', function($http){
   return {
      list: function(query){
       return $http.get('http://192.168.100.100/myApp/products/'+query);
        }
        };
        });

然后在你的控制器

var promise = items.list(query);
promise.then(function(response){
//here we go
$scope.items = angular.fromJson(JSON.parse(response.data));
});