Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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
Javascript AngularJS用户界面路由器到一个状态,但使用不同的URL_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript AngularJS用户界面路由器到一个状态,但使用不同的URL

Javascript AngularJS用户界面路由器到一个状态,但使用不同的URL,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,在我的AngularJS应用程序中,我希望捕获错误并将用户发送到404状态,如下所示: $rootScope.$on('$stateNotFound', function(event, unfoundState, fromState, fromParams){ //console.log(unfoundState.to); //console.log(unfoundState.toParams); //console.log(unfoundState.options)

在我的AngularJS应用程序中,我希望捕获错误并将用户发送到404状态,如下所示:

$rootScope.$on('$stateNotFound',  function(event, unfoundState, fromState, fromParams){ 
    //console.log(unfoundState.to);
    //console.log(unfoundState.toParams);
    //console.log(unfoundState.options);
    $state.go('404');
});
这适用于用户单击应用程序中的错误链接(例如,没有状态,因为有状态但没有内容的链接通过其他方法处理)等

代码加载404状态罚款:

.state('404',
        {
            views: {
                'body': {
                    templateUrl: 'partials/404.html',
                }
            }
        });
但我想做的是将URL更改为他们试图访问的状态,因此基本上加载404状态,但使用错误的URL(因为404在服务器环境中工作)

我已经调查过了:

history.replaceState(null, null, unfoundState.to);
$state.go('404');
但这会导致应用程序中出现重大错误,并更改URL,但不会更改状态


如何执行此操作?

尝试此操作以捕获与以前任何路由都不匹配的所有URL:

.state("404", {
    url: "*path", // will catch all URLs
    templateUrl: 'partials/404.html'
})
根据调查,我认为你可以做到:

$state.go('404',{},{location:false});

注意:我正在创建一个plunkr以进行验证,但我现在没有时间完全完成它

我还没有尝试过。我不确定
$state.transitiono('404',{},{location:false})工作。