2016-07-24 8 views
0

Im Erstellen eines benutzerdefinierten Service, wo es funktioniert, gibt mir in der Funktion Service die Daten zurück, das Problem ist, wenn ich es in der Steuerung anrufen, es gibt mir 'undefined' zurück.Benutzerdefinierte Service Rückgabe undefined

Service:

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

}]); 

App.js:

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

Antwort

2

getTasks gibt nichts zurück. Eine Rückkehr innerhalb success tut nichts.

Sie müssen die $http Versprechen zurückgeben.

Versuchen

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

     } 
    } 
}); 

In Controller:

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