Ich bin ziemlich neu in Angular und habe begonnen, einen Beispielworkflow zu erstellen. Ich habe einen eckigen Dienst, der Benutzer authentifiziert und die eingeloggten Benutzerdetails beibehält.Mehrere Instanzen von eckigen Serviceobjekten werden erstellt
Bearbeiten: Ich habe zwei separate HTML-Seiten als Ganzes, schafft das ein Problem der Erstellung von zwei Instanzen.
studentApp.factory("loginService", function(){
this.loggedUser="Guest!";
return{
checkCredentials : function(user){
//Authenticating logic goes here.
this.loggedUser =user.username;
}
};
});
Nach einer erfolgreichen Anmeldung einer Homepage angezeigt wird, und es gibt den angemeldeten Benutzer Namen auf der HTML-Seite, indem Sie den Dienst wieder erreichbar.
studentApp.controller("headerController", ["loginService", function(loginService){
var vm = this;
vm.loggedUser = loginService.loggedUser;
}]);
Aber es scheint, dass "Gast" angezeigt wird, anstatt den Benutzernamen. Ich denke, dass eine neue Dienstinstanz erstellt wird.
Wann rufen Sie die 'checkCredentials' Funktion auf? Es wird neuer Benutzername – Disha
Es wird aufgerufen, wenn das Anmeldeformular übergeben wird ng-submit = "lc.formSubmitted()" – Raghav
überprüfen Sie, was "dies" ist, wenn die Methode Anmeldeinformationen aufgerufen wird. Ich vermute, dass es nicht mehr der Service sein könnte. Versuchen Sie, die Syntax der anonymen Funktion zu verwenden. Dies erzeugt eine Schließung, die das "Dies" vor dem Geltungsbereich bewahrt, in dem es erzeugt wurde. z.B. replace "checkCredentials: function (user) {" mit "checkCredentials: (user) => {" –