Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs UI路由器:更改缺少状态的模板_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs UI路由器:更改缺少状态的模板

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

当用户访问缺失状态时,是否可以“设置”视图?如果用户试图访问一个不存在的页面而不是重定向用户,我只希望404处理程序注意到一些


类似于。

您可以在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)?是,