从服务到控制器的$ http数据

时间:2014-01-22 20:24:49

标签: angularjs

我正在寻找一种方法将请求的数据从我的服务传输到控制器。简单的返回数据不起作用....我想知道为什么?

test.factory('DataService', function($http, $log) {

    return {

        getEmployees: function( ) {

            $http({method: 'GET', url: 'php/data.php'})
                .success ( function ( data, status, header, config ){

                    //return data

                })
                .error ( function ( data, status, header, config ){

                    $log.log ( status );

                })

        },

        getTest: function( ) {

            return "test123";

        }

    };

});


test.controller('employees', function ( $scope, DataService ) {

    $scope.test = DataService.getEmployees();

});

谢谢。罗伯特

1 个答案:

答案 0 :(得分:2)

您可以使用$q并承诺。 $http是异步调用

工厂

test.factory('DataService', function($http, $log, $q) {
    return {
        getEmployees: function( ) {
            var d = $q.defer();
            $http({method: 'GET', url: 'php/data.php'})
                .success(function(data, status, header, config){
                    d.resolve(data);
                }.error(function(error){
                    d.reject(error);
                });
            return d.promise;
        },
        getTest: function( ) {
            return "test123";
        }
   };
});

控制器

DataService.getEmployees().then(function(data){
    $scope.test = data;
});