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 出现错误时返回到以前的状态_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 出现错误时返回到以前的状态

Angularjs 出现错误时返回到以前的状态,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我在应用程序中使用angularui router,每当出现错误时,例如HTTP 404、HTTP 500等,我希望显示一个错误页面,其中包含错误的详细信息和一个按钮,使用户能够返回到以前的状态或页面 我正在使用HTTP响应拦截器监视HTTP错误,然后执行$state.go('error')以打开错误页面 // create a restore point for the error page to return to. $rootScope.previousState = $state.cur

我在应用程序中使用angular
ui router
,每当出现错误时,例如
HTTP 404
HTTP 500
等,我希望显示一个错误页面,其中包含错误的详细信息和一个按钮,使用户能够返回到以前的状态或页面

我正在使用HTTP响应拦截器监视HTTP错误,然后执行
$state.go('error')
以打开错误页面

// create a restore point for the error page to return to.
$rootScope.previousState = $state.current.name;
$rootScope.previousStateParams = $state.current.params;
我还在所有错误承诺函数中执行
$state.go('error')

我的控制器中有以下代码,用于创建一个还原点,当用户单击错误页面上的“返回”链接时,该还原点将重新加载控制器

// create a restore point for the error page to return to.
$rootScope.previousState = $state.current.name;
$rootScope.previousStateParams = $state.current.params;
这是我的error.html页面:

<div class="alert alert-danger alert-dismissible" role="alert">
    <div class="medium">{{errorMessage}}</div>
    <br />
    <div>{{reason}}</div>
    <br />
    <div>
        <a href="#" data-ng-click="return()">Go back</a>
    </div>
</div>
我要寻找的是存储每个控制器当前状态的最干净的方法,以便单击“返回”按钮将使用最初传入的任何参数重新加载控制器

我曾尝试在我的模块
run
bootstrap方法中使用以下代码,但当我单击一个链接以显示订单时,它会遍历到一个名为
order edit
的状态,然后尝试通过REST从数据库中获取订单

如果找不到订单URI,我会在错误页面中正确显示HTTP 404错误,当我单击“返回”按钮时,它会无限期地重新启动以前的REST操作,这不是我想要的

我希望“返回”按钮将我带回两个步骤,返回到在表中显示订单的页面。要做到这一点,我可能必须手动存储当前状态,以便返回将重新加载正确的状态,但我担心这可能会因为大量控制器而变得混乱,从而难以实现

$rootScope.previousState;
$rootScope.previousStateParams;
$rootScope.currentState;

$rootScope.$on('$stateChangeSuccess', function (ev, to, toParams, from, fromParams) {
    $rootScope.previousState = from.name;
    $rootScope.previousStateParams = fromParams;
    $rootScope.currentState = to.name;
    console.log('Previous state:' + $rootScope.previousState);
    console.log('Current state:' + $rootScope.currentState);
});
我希望避免在所有控制器中手动设置当前状态,因为如果“返回”按钮中指定的状态未设置为正确的状态,应用程序可能很容易进入错误的控制器


我希望这一切都有意义?

错误页面是一个页面是否重要?在我走这条路线之前,我会选择使用提醒toast或modal。我想它不必是页面,因为我认为这是在一个地方提醒错误的正常方式。我很乐意考虑另一种警告用户错误的方法。你指的是警报吐司吗?有很多方法可以实现这种类型的警报,我认为,事实上,你可以使用数据绑定实现许多无缝的UI技术—弹出窗口、烤面包机、模态、对话框。所有这些似乎都比跳转到另一个页面然后返回要容易得多。感谢您的有用评论,我将研究如何实现烤面包机,因为这似乎更符合我的要求。