Nano Hash - криптовалюты, майнинг, программирование

Ionic: контроллер Angular не запускается при запуске приложения

Я получаю страницу входа в систему, впервые используя Ionic Mobile Framework и только что изучив Angular JS. Когда запускается страница входа, я хочу перейти на домашнюю страницу, только если срок действия сеанса еще не истек. В противном случае мы хотим перейти на страницу входа в систему. Он отлично работает, переходя туда и обратно между экраном/состоянием «песен» выхода из системы и экраном/состоянием входа в систему, однако у меня есть одна проблема.

Когда приложение загружается, оно переходит к состоянию песен или «домашней» странице, однако оно не запускает код контроллера для этого состояния. В коде контроллера я нажимаю маршрут на нашем веб-сайте, чтобы увидеть, активен ли сеанс. Если это так, он вернет JSON, в противном случае мой authInterceptor возьмет на себя управление и переведет состояние в логин.

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

.run(function($ionicPlatform, $cordovaSplashscreen, localstorage, $state) {

  setTimeout(function() {
    $cordovaSplashscreen.hide()
  }, 1500)

  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }

    if(localstorage.get('subdomain') == undefined || 
      localstorage.get('subdomain') == 'null' || 
      localstorage.get('subdomain') == null ||
      localstorage.get('subdomain') == 'undefined' ||
      localstorage.get('subdomain') == "")
    {
      $state.go('subdomain');
    }
    else
      $state.go('songs');

  });
})  



.config(function($stateProvider, $urlRouterProvider, $httpProvider) {
  $urlRouterProvider.otherwise("/songs");

  $stateProvider
    .state('login', {
      url: "/login",
      templateUrl: "templates/login.html",
      controller: 'LoginCtrl'
    })
    .state('subdomain', {
      url: "/subdomain",
      templateUrl: "templates/subdomain.html",
      controller: 'SubdomainCtrl'
    })
    .state('songs', {
      url: "/songs",
      templateUrl: "templates/songs.html",
      controller: 'SongsCtrl'
    })

  $httpProvider.interceptors.push('authInterceptor');

});

// register the interceptor as a service
.factory('authInterceptor', function($q, $injector) {
  return {
    // optional method
   'responseError': function(rejection) {
      if(rejection.status == 0 || rejection.status == 403){
        $injector.get('$state').transitionTo('login',null,{ reload: true, inherit: true, notify: true });
        if(rejection.config.url.indexOf('login') > -1){
          navigator.notification.alert("Invalid username or password.", function(){}, "Login Failed");
        }
      }

      return $q.reject(rejection);
    }
  };
})

.controller('SongsCtrl', function($scope, $state, user) {

  user.check(); //Resource that hits route on server

  $scope.logout = function()
  {
    user.logout();
    $state.go('login');
  }
})

Спасибо большое. Джеймс


Ответы:


1

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

11.09.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..