Как получить доступ к данным из моего контроллера в состоянии

Каков наилучший способ остановить пользователя от перехода в состояние, если для этого состояния нет данных? Мне нужно перенаправить пользователя на /featured, если в одном из других состояний нет данных.

Я думал, что могу сначала проверить контроллер на наличие данных, а затем перенаправить с помощью $state.go, если данные были нулевыми, но я не могу найти пример того, как получить доступ к данным в контроллере внутри события onEnter.

Я думаю, что пример кода должен подвести итог:

fseControllers.config(function($stateProvider, $urlRouterProvider){

  $urlRouterProvider.otherwise("/featured");

  $stateProvider
    .state('featured', {
        url: "/featured",
        templateUrl: "featured-template"
    })

    .state('friends', {
        url: "/friends",
        templateUrl: "friends-template",
        controller: 'FseController',
        onEnter: function(){
            // Here I want to redirect to /featured if no data in controller
        }
    })

    .state('stories', {
        url: "/stories",
        templateUrl: "stories-template"
    })

    .state('events', {
        url: "/events",
        templateUrl: "events-template"
    })
})

person Neil    schedule 01.09.2014    source источник


Ответы (1)


Вы можете реорганизовать свой контроллер, чтобы использовать службу, которую можно внедрить в функцию onEnter и в контроллер. Сервисы AngularJS

onEnter:function(FriendsService, $location){
  if(!!FriendsService.getFriends()){
    $location.path("/featured");
  }
}
person Sridhar Chidurala    schedule 01.09.2014