Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.12.2015, 16:26
Аспирант
Отправить личное сообщение для ArtemKrass Посмотреть профиль Найти все сообщения от ArtemKrass
 
Регистрация: 23.02.2013
Сообщений: 56

Запуск service из $rootScope.$on('$stateChangeStart'....)
Эксперементирую с ui.router.
Какой бы сервис не написал, при вызове внутри $rootScope.$on('$stateChangeStart') получаю TypeError: servicename.func is not a function

В чем может быть проблема? Покажите, ПОЖАЛУЙСТА, на примере примитивный .service (hello world) и запуск его в $rootScope.$on('$stateChangeStart')
Ответить с цитированием
  #2 (permalink)  
Старый 11.12.2015, 14:02
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Код в студию
Ответить с цитированием
  #3 (permalink)  
Старый 11.12.2015, 14:38
Аспирант
Отправить личное сообщение для ArtemKrass Посмотреть профиль Найти все сообщения от ArtemKrass
 
Регистрация: 23.02.2013
Сообщений: 56

angular.module('myApp.auth', [
    'ui.router'
  ])
  .config(['$stateProvider', '$urlRouterProvider',
    function ($stateProvider, $urlRouterProvider) {

      $stateProvider
        .state('auth', {
          url: '/auth',
          abstract: true,
          template: '<ui-view>'
        })

      .state('auth.login', {
        url: '/login',
        templateUrl: 'src/auth/partials/login.html', 
        data: {
          'noLogin': true
        }
      });
  ]);


angular.module('myApp.auth')
  .service('SessionService', [
    '$injector',
    function($injector) {
      "use strict";

      this.checkAccess = function(event, toState, toParams, fromState, fromParams) {
        var $scope = $injector.get('$rootScope'),
            $sessionStorage = $injector.get('$sessionStorage');

        if (toState.data !== undefined) {
          if (toState.data.noLogin !== undefined && toState.data.noLogin) {
            // если нужно, выполняйте здесь какие-то действия 
            // перед входом без авторизации
          }
        } else {
          // вход с авторизацией
          if ($sessionStorage.user) {
            $scope.$root.user = $sessionStorage.user;
          } else {
            // если пользователь не авторизован - отправляем на страницу авторизации
            event.preventDefault();
            $scope.$state.go('auth.login');
          }
        }
      };
    }
  ]);


angular.module('myApp', [
  'myApp.auth',
  'ui.router',
  'ngStorage'
])

.run([
  '$rootScope', '$state', '$stateParams', 'SessionService',
  function ($rootScope, $state, $stateParams, SessionService) {

    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;

    $rootScope.user = null;

    // Здесь мы будем проверять авторизацию
    $rootScope.$on('$stateChangeStart',
      function (event, toState, toParams, fromState, fromParams) {
        SessionService.checkAccess(event, toState, toParams, fromState, fromParams); // вот здесь и ошибка
      }
    );
  }
])
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2015, 06:48
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Поставь на отладчик и посмотри, вероятно SessionService не заинжектился
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вакансия "Старший специалист по развитию HP Service Manager" Kseniya_Stolyarova Работа 3 01.10.2015 19:13
Запуск функции после загрузки дива qwe88 Общие вопросы Javascript 18 01.09.2015 10:40
Скрипт на запуск нескольких клиентов в Sandboxie faraon8383 Общие вопросы Javascript 0 03.03.2014 15:22
Возможен ли Запуск ява-скрипт при откате Истории в браузере назад ? Deff Общие вопросы Javascript 13 27.05.2012 01:00
Чем можно организовать запуск скрипта атом. по времени. I5Rek Серверные языки и технологии 2 01.05.2011 23:00