2015-04-22 2 views
0

не помогло бы мне обновить мой контроллер, чтобы изменить имя пользователя при входе пользователя в систему. проблема, с которой я столкнулся, заключается в том, что даже после обновления пользователя имя пользователя всегда пусто. Не могли бы вы помочь мне исправить это? вот мой контроллеротображение подключенного пользователя после входа в систему

controller(
      "HomeController", 
      function HomeController($scope, sessionService, accountService) { 
       var loggedUSer = {}; 
       loggedUSer = accountService.getuser(); 
       if (angular.isDefined(loggedUSer)) 
        $scope.username = loggedUSer.username; 
       $scope.isLoggedIn = sessionService.isLoggedIn; 
       $scope.logout = sessionService.logout; 
      }) 

и отображается имя пользователя здесь после вызова контроллера

<b>{{username}}</b> 

Когда я загружаю мою веб-страницу в поле Имя пользователя пуст, и всегда отображается пустым, даже если имя пользователя является заполняется после входа пользователя в систему. Ineed, чтобы изменить это, чтобы отобразить подключенного пользователя.

ниже завод используется для извлечения пользователя и входа в систему:

factory(
      'sessionService', 
      function($http) { 
       var session = {}; 
       session.login = function(data) { 
        return $http 
          .post(
            "/myapp/login", 
            "username=" + data.username 
              + "&password=" + data.password, 
            { 
             headers : { 
              'Content-Type' : 'application/x-www-form-urlencoded' 
             } 
            }) 
          .then(
            session.LoggIn = function(data) { 
             alert("login successful"); 
             localStorage.setItem("session", {}); 
             console 
               .log(
                 "localStorage after login: ", 
                 localStorage); 
             console.log(
               "session after login: ", 
               session); 
             console.log("data after login: ", 
               data); 
            }, function(data) { 
             alert("error logging in"); 
            }); 
       }; 
       session.logout = function() { 
        localStorage.removeItem("session"); 
       }; 
       session.isLoggedIn = function() { 
        return localStorage.getItem("session") !== null; 
       }; 
       return session; 
      }) 

и

factory(
      'accountService', 
      function($resource, sessionService) { 
       var service = {}; 
       service.register = function(account, profile, success, 
         failure) { 
        if (profile.id == 1) { 
         var Account = $resource("/myapp/rest/account"); 
         Account.save({}, account, success, failure); 
        } else { 
         var Account = $resource("/myapp/rest/account/teacher"); 
         Account.save({}, account, success, failure); 
        } 
       }; 
       service.userExists = function(account, success, failure) { 
        var Account = $resource("/myapp/rest/account"); 
        var data = Account.get({ 
         username : account.username, 
         password : account.password 
        }, function() { 
         console.log("user details : ", data); 
         var accounts = data.username; 
         if (accounts && accounts.length !== 0) { 
          console 
            .log("profile id :", 
              data.userProfile.id); 
          service.data = data;        
          success(account); 
         } else { 
          failure(); 
         } 
        }, failure); 
       }; 
       service.getuser = function() { 
        if (service.data){ 
         console.log (service.data); 
         return service.data; 
        } 
        else { 
         sessionService.logout(); 
        } 
       }; 
       return service; 
      }).controller(
      "LoginController", 
      function($scope, sessionService, accountService, $state) { 
       $scope.login = function() { 
        accountService.userExists($scope.account, function(
          account) { 
         sessionService.login($scope.account).then(
           function() { 
            $state.go("home"); 
           }); 
        }, function() { 
         alert("Error logging in user"); 
        }); 
       }; 
      }) 
+0

Что делать, если вы инициализируете $ scope.username 'uninitialized'? Затем вы можете определить, является ли это рендеринг или проблема с моделью/данными. Возможно, также добавьте ветку else в оператор, установив «undefined», чтобы проверить, выполнена ли логика. – Pieter21

+0

Выполняется ли регистрация после создания контроллера? – martinoss

+0

попробуйте использовать '$ rootScope' вместо' $ scope'. Он будет продолжать использовать имя пользователя в приложении. – batmaniac7

ответ

0

Я зафиксировал его путем добавления нг-шоу. Таким образом, вы можете показать имя пользователя, если он вошел в систему или «войти», если он не вошел в систему.

<div ng-show="username!==undefined"> 
{{username}} 
</div> 
<div ng-show="username===undefined"> 
<a href="login.html">Log in</a> 
</div> 

Это просто обходной путь.