2016-07-24 108 views
0

我創建一個自定義服務,它在哪裏工作,正在返回給我的函數服務的數據,問題是當我在控制器中調用它時,它返回我'undefined'。定製服務返回undefined

服務:

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' 
]); 

回答

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; 
});