如果没有该状态的数据,阻止用户进入某个州的最佳方法是什么?如果其他状态中没有数据,我需要将用户重定向到/ 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"
})
})
答案 0 :(得分:2)
您可以重构控制器以使用可以注入onEnter功能和Controller的服务。 AngularJS Services
onEnter:function(FriendsService, $location){
if(!!FriendsService.getFriends()){
$location.path("/featured");
}
}