javascript - 自定义服务返回未定义

标签 javascript angularjs angularjs-scope

我正在创建一个自定义服务,它正在工作,正在函数服务中返回数据,问题是当我在 Controller 中调用它时,它返回“未定义”。

服务:

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

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

            }
        }
    });

Controller :

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

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

}]);

应用程序.js:

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

最佳答案

getTasks 不返回任何内容。 success 内的返回不会执行任何操作。

您需要返回$http promise 。

尝试

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

        }
    }
});

在 Controller 中:

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

关于javascript - 自定义服务返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38557647/

相关文章:

javascript - 构建HTML5 Canvas/JS游戏

javascript - 单击时Angularjs将元素添加到DOM

angularjs - 从输入将数组发布到数据库

javascript - 自定义指令中 Angularjs 范围的使用

javascript - Scope.attribute 可用但 scope.attribute.variable 在指令中未定义

javascript - 禁用 displayTag 中的超链接

javascript - 如何将元素高度附加为其他元素样式值

javascript - 在模式中显示 AJAX 确认

javascript - 如何检查数组中是否存在值?

javascript - AngularJS $watch 不等待触发发生,执行回调函数内的 $scope