2017-03-12 3 views
0

Ich möchte einen Dienst anrufen, um einen Benutzer aus einer Datenbank (derzeit Scheindaten, aber es wird von einer Datenbank sein) abrufen und haben Benutzerinformationen werden an ProfileController gesendet, wenn der Status "Profil" aktiviert ist. Der Anruf wird an den Dienst getätigt, aber danach passiert nichts mehr: Im Bereich then() oder catch() wird keine Aktion ausgeführt. Irgendwelche Ideen, was ich tun sollte?Angular - Service gibt Wert zurück, leitet aber nicht in app.config

UsersService.js verwendet derzeit Scheindaten, aber es wird schließlich Daten aus einer Datenbank abrufen.

(function(){ 
    "use strict"; 

    angular.module("testing_app") 
     .factory("UsersService", function(){ 

      var Users = {}; 

      var userList = [ 
       { id: 1, name: "Richard Hendricks", email: "[email protected]", phone: 4085550011, pokemon: { isPresent: true, name: "eevee"}, icon: { isPresent: false, name: null} }, 
       { id: 2, name: "Erlich Bachman", email: "[email protected]", phone: 4155552233, pokemon: { isPresent: true, name: "celebi"}, icon: { isPresent: false, name: null} }, 
       { id: 3, name: "Gavin Belson", email: "[email protected]", phone: 9165554455, pokemon: { isPresent: true, name: "snorlax"}, icon: { isPresent: false, name: null} } 
      ]; 

      Users.all = function(){ 
       return userList; 
      }; 

      Users.findById = function(id){ 
       return userList.find(function(user){ 
        return user.id == id; 
       }); 
      }; 

      return Users; 
     }); 
})(); 
+0

können Sie die Details Ihres UserService veröffentlichen? – Pengyy

+0

@Pengyy überprüfen Sie es jetzt –

+0

Rückgabe Mock Versprechen statt Mock-Daten. – georgeawg

Antwort

2

Für Sie versprechen nicht in Ihrem Dienst nutzen, gibt es keine Promise.then sein() oder Promise.catch() in der UserService.findById().

sollten Sie Versprechen in Ihrem Service verwenden.

Users.findById = function(id){ 
    let deferred = this.$q.defer(); // you have to inject $q in your factory 

    deferred.resolve(userList.find(function(user) { 
     return user.id == id; 
    })); 

    return deferred.promise. 
}; 
+0

Das hat den Trick gemacht. Ich hätte es besser wissen müssen, da ich in der Vergangenheit viel versprochen habe. Vielen Dank. –

Verwandte Themen