@ZallinTim

Почему не работает $location?

Использую angular-fire, обертку для стандартного firebase API.
В процессе работы возникла следующая проблема:

//задача - проверить права доступа на входе в админку
//если пользователь не авторизован, отдать шаблон '/login' .

$scope.loginService = $firebaseSimpleLogin(new Firebase(FIREBASE_URI));

$scope.loginService.$getCurrentUser()
    .then(function(user){
        if(!user){
            $scope.redirect();
        }
    })

$scope.redirect = function(){
        $location.path('/login');
}


По идее, после срабатывания колбэка, $routeProvider должен отреагировать на смену url-a и выдать соответствующий шаблон. Однако, этого не происходит, и, хотя в адресной строке url меняется, на экране остается та же страница.

Пробовал оборачивать в $apply(fn), вылетает ошибка, что "операция $apply уже запущена".

Как заставить $location.path() работать?
  • Вопрос задан
  • 2671 просмотр
Решения вопроса 1
maxaon
@maxaon
Попробуйте использовать $location.url
И еще попробуйте
.then(function(user){
        if(!user){
            console.log('redirecting')
            $scope.redirect();
        }
    })

Сдается мне что дожен быть эксепшн, а не просто обработка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы