2016-06-21 3 views
0

Ich implementiere einige Funktionen, um eine Liste von Mitarbeitern aus der Datenbank abzurufen, die in meiner AngularJS-Anwendung angezeigt werden. Ich habe einen Controller, der aktuellen Arbeiten wie unten angezeigt:Datenabruf funktioniert innerhalb eines Controllers, aber nicht, wenn ich einen Dienst verwende - AngularJS

$scope.getEmployee = function() { 
     $http.get("EmpWebService.asmx/GetEmp") 
     .then(function (response) { 
      $scope.employees = response.data; 
     }); 
    } 

Ich habe versucht, diese Logik zu bewegen innerhalb eines Dienstes verwendet werden, aber die Daten zurückgibt undefined. Es ist seltsam, weil das vor ein paar Tagen gut funktionierte, aber plötzlich scheint es nicht zu funktionieren. Hier ist der Code:

-Controller

$scope.getEmployee2 = function() { 
     $scope.employees = fetchEmpService.fetchEmp(); 
    } 

Service.js

fetchEmp: function() { 
      debugger; 
      return $http.get("EmpWebService.asmx/GetEmp") 
       .then(function (response) { 
        return response.data; 

       }); 
     } 
+1

Haben Sie "$ http" zu Ihrem Service hinzugefügt? –

Antwort

2

Der obige Code wird nicht funktionieren, weil fetchEmp ein Versprechen so $ scope.employees zurückkehren wird, ist ein Versprechen, nicht die Mitarbeiter Liste, versuchen Sie dies zu tun,

$scope.getEmployee2 = function() { 
    fetchEmpService.fetchEmp().then(function (employeeList){ 
     $scope.employees = employeeList; 
    }); 
} 
+0

Danke, das ist meine Lösung –

1

fetchEmpService.fetchEmp() gibt eine Zusage zurück. Sie können auf das Mitarbeiterobjekt von diesem Service aus im Erfolgsrückruf zugreifen.

$scope.getEmployee2 = function() { 
    fetchEmpService.fetchEmp() 
    .then(function(emp){ 
     $scope.employees = emp; 
    }); 
} 
Verwandte Themen