Показать сообщение после входа в angularjs

0

У меня есть функция входа в angularjs:

$scope.login = function() {
    $http.post('/users/login', $scope.user).then(function(result) {
        if (result.data.userid) {
            $scope.isAuthenticated = true;
            $cookies.put('userid', result.data.userid);
            $rootScope.userid = result.data.userid;
            $scope.message = result.data.msg;
            //$window.location = '/';
        } else {
            $scope.isAuthenticated = false;
            $scope.message = result.data.msg;
        }
    });
  }

после входа в систему я хочу показать userid через $ rootScope.userid в html и выпустить сообщение $ scope.message. Если я хочу показать userid, мне нужно перезагрузить страницу по $window.location = '/' потому что она не изменяется автоматически. Но если я перезагружу страницу, я не могу пропустить сообщение. Может ли кто-нибудь предложить мне решение? спасибо

  • 0
    как вы пытаетесь показать userId в HTML? не могли бы вы вставить этот код?
  • 0
    <h2 ng-hide = "! userid"> {{userid}} </ h2> вот так
Показать ещё 1 комментарий

1 ответ

0
Лучший ответ

В таком сценарии я бы использовал ui-router и уложил маршруты и контроллеры, как показано ниже:

  • appController (это родительское состояние для всех других состояний)
    • loginController (дочернее состояние)
    • indexController (дочернее состояние)
    • anyOtherControllers (дочернее состояние)

В контроллере входа

  1. после успешного входа я подниму событие с помощью $ emil. это событие будет обработано в appController, используя $ on. appController затем показывает сообщение для входа.
  2. контроллер входа в систему изменит маршрут на желаемый вид, используя $ state.go(), например $ state.go('index').

Надеюсь это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню