AngularJS factory http returns empty

后端 未结 3 904
我寻月下人不归
我寻月下人不归 2020-12-02 19:23

I\'m trying AngularJS for the first time. I\'m getting JSON data from a http-get request using a factory, but the object is returned empty, before the ajax-request is done.<

3条回答
  •  温柔的废话
    2020-12-02 19:44

    Using the q promise library means your success function can stay in your service:

    app.factory('Data', function ($http, $q) {
        return {
            ajaxItems: function () {
                var deferred = $q.defer();
                $http({ method: "POST", url: "/Home/GetSearchResults" })
                    .success(function (data, status, headers, config) {
                        deferred.resolve(data);
                    }).error(function (data, status, headers, config) {
                        deferred.reject(status);
                    });
                return deferred.promise;
            }
        }
    });
    
    app.controller('ResultsCtrl', ['$scope', 'Data', function ($scope, Data) {
        $scope.get = function () {
            $scope.items = Data.ajaxItems();
            //the model returns a promise and THEN items
            $scope.items.then(function (items) {
                $scope.items = items;
            }, function (status) {
                console.log(status);
            });
        };
    }]);
    

提交回复
热议问题