Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.10.2015, 00:05
Аспирант
Отправить личное сообщение для Romaboy Посмотреть профиль Найти все сообщения от Romaboy
 
Регистрация: 29.05.2013
Сообщений: 61

Помогите в роутинге сделать редирект
Делаю бекенд для проекта на ангуляре, но ангуляр впервые вижу и подсказки прошу! Логика такая: если человек (переменная current_user) войден, то его должно со страниц входа, регистрации, забыл пароль и прочих таких редиректить на основную страницу, и наоборот: если не авторизован - то на вход. Роутингов много, 80, в каждом я прописал такой резолв:
resolve: {
                      signed_in: ['$location', function ($location) {
                        if(!current_user){$location.path('/access/signin')}
                      }]
                  }

И это сработало!
Теперь если у него не все данные заполнены, то должно не пускать со страницы профиля, пока не заполнит:
resolve: {
                      signed_in: ['$location', function ($location) {
                        if(!current_user){
                          $location.path('/access/signin')
                        } else if(current_user.mobile == '') {
                          $location.path('/app/page/profile')
                        }
                      }]
                  }

Так как все нужное заполнено во время регистрации, то нужен только мобильный. И это не работает! Редиректит только если по адресу перейти, а потом при кликах игнорирует. Если console.log рядом с $location.path поставить, то логит, но ангуляр игнорирует. return false не помог.
Ответить с цитированием
  #2 (permalink)  
Старый 20.10.2015, 23:49
Аспирант
Отправить личное сообщение для Romaboy Посмотреть профиль Найти все сообщения от Romaboy
 
Регистрация: 29.05.2013
Сообщений: 61

Думаю как вариант сделать на jquery, чтобы все ссылки работать перестали, а после заполнения ней же обратно блок с ссылок убрать, что думаете?
Ответить с цитированием
  #3 (permalink)  
Старый 21.10.2015, 04:17
Аспирант
Отправить личное сообщение для Romaboy Посмотреть профиль Найти все сообщения от Romaboy
 
Регистрация: 29.05.2013
Сообщений: 61

jquery никак не помог, спс странному устройству ангуляра
Но получилось в итоге, вдруг кому пригодится:
angular.module('app')
  .run(function($rootScope, $location, $state) {
    $rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {
      if(current_user){
        if(current_user.mobile == '' && toState.name != 'app.page.profile'){
          e.preventDefault();
          $state.go('app.page.profile');
          e.targetScope.$watch('$viewContentLoaded', function(){
            $("[ui-butterbar]").removeClass('active');
          })
        }
      } else {
        if(!~['access', 'access.signin', 'access.signup', 'access.forgotpwd', 'access.resetpwd'].indexOf(toState.name)) {
          e.preventDefault();
          $state.go('access.signin');
        }
      }
    })
  })
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите сделать так чтоб по клику открывалось и по клику же закрывалось Maxsl_89 Элементы интерфейса 1 25.10.2013 16:11
помогите сделать слайдер Hardcore4life Элементы интерфейса 6 21.08.2013 16:55
Помогите сделать список из выборки shaltay jQuery 15 03.04.2011 17:54
Гуру ! помогите сделать начало слайдшоу c рандомной картинки Nekojiru Общие вопросы Javascript 0 22.07.2009 19:28
помогите сделать начало слайдшоу c рандомной картинки Nekojiru Ваши сайты и скрипты 0 20.07.2009 19:50