Angularjs UI路由器:更改缺少状态的模板
当用户访问缺失状态时,是否可以“设置”视图?如果用户试图访问一个不存在的页面而不是重定向用户,我只希望404处理程序注意到一些Angularjs UI路由器:更改缺少状态的模板,angularjs,angular-ui-router,Angularjs,Angular Ui Router,当用户访问缺失状态时,是否可以“设置”视图?如果用户试图访问一个不存在的页面而不是重定向用户,我只希望404处理程序注意到一些 类似于。您可以在app.run函数中检查状态更改事件。。 像这样的 app.run(function ($rootScope, $state) { $rootScope.$on("$stateNotFound", function (event, unfoundState, fromState, fromParams) { //manage stat
类似于。您可以在app.run函数中检查状态更改事件。。 像这样的
app.run(function ($rootScope, $state) {
$rootScope.$on("$stateNotFound", function (event, unfoundState, fromState, fromParams) {
//manage state not found
});
});
来源:您可以在app.run函数中检查状态更改事件。。 像这样的
app.run(function ($rootScope, $state) {
$rootScope.$on("$stateNotFound", function (event, unfoundState, fromState, fromParams) {
//manage state not found
});
});
来源:正如
@cshion
所说,您可以捕获$stateNotFound
并转到另一个州
或者你想要的东西
app.run(['$rootScope', '$state', function ($rootScope, $state) {
$rootScope.$on("$stateNotFound", function (event, unfoundState, fromState, fromParams) {
$state.go('my404state');
});
}]);
这只能通过调用$state.go('missingstate')来实现代码>但是如果用户键入了一个假的url,那么它将不起作用。因此更适合用于测试/调试目的
另一方面,您可以使用$urlRouterProvider重定向用户。否则
app.config( ['$stateProvider', '$urlRouterProvider',
function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider
.when('/', [$state, function($state) { $state.go('home') }])
.otherwise('/notfound');
}
]);
并创建一个特定状态以显示404未找到
编辑:基于评论。
另一个选项是用于自定义url处理
app.config(['$urlRouteProvider','MyAuthService', function ($urlRouterProvider) {
$urlRouterProvider
.when('/', [$state, function($state) { $state.go('home') }])
.rule(function ($injector, $location) {
if (MyAuthService.isAuthenticated()) {
return "/user/mainpage";
}
return $location.path();
})
.otherwise('/notfound');
}])
正如@cshion
所说,您可以捕获$stateNotFound
并转到另一个州
或者你想要的东西
app.run(['$rootScope', '$state', function ($rootScope, $state) {
$rootScope.$on("$stateNotFound", function (event, unfoundState, fromState, fromParams) {
$state.go('my404state');
});
}]);
这只能通过调用$state.go('missingstate')来实现代码>但是如果用户键入了一个假的url,那么它将不起作用。因此更适合用于测试/调试目的
另一方面,您可以使用$urlRouterProvider重定向用户。否则
app.config( ['$stateProvider', '$urlRouterProvider',
function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider
.when('/', [$state, function($state) { $state.go('home') }])
.otherwise('/notfound');
}
]);
并创建一个特定状态以显示404未找到
编辑:基于评论。
另一个选项是用于自定义url处理
app.config(['$urlRouteProvider','MyAuthService', function ($urlRouterProvider) {
$urlRouterProvider
.when('/', [$state, function($state) { $state.go('home') }])
.rule(function ($injector, $location) {
if (MyAuthService.isAuthenticated()) {
return "/user/mainpage";
}
return $location.path();
})
.otherwise('/notfound');
}])
使用否则
。这里是另一篇帖子的链接:我想我找到了答案。将尝试,然后回答我的问题,如果没有人这样做。如果状态缺失,我们无法更改模板-它属于状态。我们真的需要导航到否则
def。。。哪里应该是状态,哪里应该是合适的模板。选中使用按钮,否则
。这里是另一篇帖子的链接:我想我找到了答案。将尝试,然后回答我的问题,如果没有人这样做。如果状态缺失,我们无法更改模板-它属于状态。我们真的需要导航到否则
def。。。哪里应该是状态,哪里应该是合适的模板。检查实际上我正在使用这种方法,但是当我们管理经过身份验证的用户时会发生什么,如果键入一个假url,更好的选择是重定向到用户的主页,因此在这种情况下,我们需要在app.run中管理假状态(或位置)。我想$state.go是否更改url/位置($window.location)?是,实际上,我正在使用这种方法,但是当我们管理经过身份验证的用户时会发生什么情况,如果键入一个假url,更好的选择是重定向到用户的主页,因此在这种情况下,我们需要管理app.run中的假状态(或位置)。我想,$state.go是否更改url/位置($window.location)?是,