Перенаправление при щелчке локального уведомления в ionic не работает

Итак, у меня настроены локальные уведомления с помощью плагина локальных уведомлений ngCordovas. Они стреляют и получают приложение. Однако после этого я не могу перенаправить на нужную страницу. Вот мой соответствующий код, console.log внутри события click срабатывает, и закомментированный код будет перенаправлять на страницу, но в этот момент он находится за пределами ionic (css не загружается, js не загружается и т. д.)

angular.module('starter', ['ionic', 'starter.controllers', 'starter.services', 'ngCordova', 'ionic-numberpicker', 'ngStorage'])
.config(function($ionicConfigProvider){
    $ionicConfigProvider.views.maxCache(0);
  })
.run(function($ionicPlatform, $rootScope, $cordovaLocalNotification) {
  $ionicPlatform.ready(function() {
    $rootScope.$on("$cordovaLocalNotification:click", function(notification, $state) {
      console.log('clicked notification');
      //window.location.href = 'templates/notification.html';
      $state.go('notification');
    });

    if (window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);
    }
  });
})

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
    .state('app', {
    url: '/app',
    abstract: true,
    cache:false,
    templateUrl: 'templates/menu.html',
    controller: 'AppCtrl'
  })

  .state('app.settings', {
    url: '/settings',
    cache:false,
    views: {
      'menuContent': {
        templateUrl: 'templates/settings.html',
        controller: 'SettingsCtrl'
      }
    }
  })

  .state('app.list', {
      url: '/list',
      cache:false,

    views: {
        'menuContent': {
          templateUrl: 'templates/list.html',
          controller: 'ListCtrl'
        }
      }
    })
    .state('app.home', {
      url: '/home',
      cache:false,

      views: {
        'menuContent': {
          templateUrl: 'templates/home.html',
          controller: 'HomeCtrl'
        }
      }
    })
    .state('app.contact', {
      url: '/contact',
      cache:false,

      views: {
        'menuContent': {
          templateUrl: 'templates/contact.html',
          controller: 'ContactCtrl'
        }
      }
    })

  .state('app.user', {
    url: '/users/:userId',
    cache:false,

    views: {
      'menuContent': {
        templateUrl: 'templates/users.html',
        controller: 'UsersCtrl'
      }
    }
  })
    .state('notification', {
      url: '/notification',
      cache:false,
      templateUrl: 'templates/notification.html',
      controller: 'NotificationCtrl'
    });
  // if none of the above states are matched, use this as the fallback
  $urlRouterProvider.otherwise('/app/home');
});

person CMOS    schedule 25.10.2016    source источник


Ответы (1)


$state.go('notification') на самом деле работает, если вы импортируете состояние в функцию .run вместо самой функции щелчка.

person CMOS    schedule 25.10.2016