如何在状态下从我的控制器访问数据

时间:2014-09-01 15:45:44

标签: angularjs angular-ui-router

如果没有该状态的数据,阻止用户进入某个州的最佳方法是什么?如果其他状态中没有数据,我需要将用户重定向到/ features。

我认为我可以首先检查控制器的数据,然后使用$ 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"
    })
})

1 个答案:

答案 0 :(得分:2)

您可以重构控制器以使用可以注入onEnter功能和Controller的服务。  AngularJS Services

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