AngularJS:不要更改浏览器位置URL以阻止用户为错误页面添加书签?

时间:2013-07-26 13:18:04

标签: angularjs angularjs-routing

我有一个我需要提交的表单,如果出现问题我想显示错误页面,我有一个控制器和视图,但我希望浏览器位置文本框不要更改以避免用户从书签错误页面。

所以我会有一个名为/ Items

的页面

用户提交并且出现错误,因此我想向用户显示此页面(itemsError.html),但我不想让用户书签/ ItemsError

如果我插入routeprovider,那么浏览器位置栏将使用/ ItemsError等更新,并且稍后用户可以为页面添加书签,但此页面是动态页面,只应显示取决于表格提交的结果。

Angular支持此类内容的最佳做法是什么?

由于

1 个答案:

答案 0 :(得分:0)

<强> config.js

$routeProvider.when('/', {
  template: '/views/home.html',
});

<强>的index.html

<!doctype html>
<html lang="en" ng-controller="app">
<head>
</head>
<body>
<ng-include src="page"></ng-include>
</body>
</html>

<强> controllers.js

controller('app', ['$scope','$route',function($scope,$route) {
  $scope.$on("$routeChangeSuccess",function($currentRoute,$previousRoute){
    $scope.page = $route.current.template;
  });
}]).

这将处理您的常规路由。现在,您可以根据逻辑动态交换控制器中的部分内容。在您的示例中,如果表单未成功完成,则您的错误回调只能动态更改部分:

controller('form', ['$scope','$route',function($scope,$route) {
  $scope.submit = function(){
    something.get().$then(
       function( value ){$scope.page = '/views/successPage.html/';},
       function( error ){$scope.page = '/views/errorPage.html/';}
    )
  }
}]).