自定义服务返回undefined

时间:2016-07-24 22:55:31

标签: javascript angularjs angularjs-scope

我创建一个自定义服务,它正在工作,正在函数服务中返回我的数据,问题是当我在控制器中调用它时,它返回我'未定义'。

服务:

var toDoListServices = angular.module('toDoListServices', []);

    toDoListServices.factory('DataTasksService', function($http){
        return {
            getTasks: function(){
                $http.get('js/data.json').success(function(data){
                    return data;
                })

            }
        }
    });

控制器:

var toDoListController = angular.module('toDoListController', []);

toDoListController.controller('ListController', ['$scope', 'DataTasksService', function($scope, DataTasksService){
        $scope.tasks = DataTasksService.getTasks();

}]);

App.js:

var myApp = angular.module('myApp', [
    'ngRoute',
    'toDoListController',
    'toDoListServices'
]);

1 个答案:

答案 0 :(得分:2)

getTasks不会返回任何内容。 success内的回报什么都不做。

您需要返回$http承诺。

尝试

toDoListServices.factory('DataTasksService', function($http){
    return {
        getTasks: function(){
            // return the promise
            return $http.get('js/data.json');               

        }
    }
});

在控制器中:

DataTasksService.getTasks().then(function(response){
    $scope.tasks = response.data;
});