我正在寻找一个很好的方法来渲染404页面,而不是在
angularjs中重定向404页面.我发现许多解决方案都是重定向到另一个页面.它会创建一个问题,如果用户点击浏览器的返回按钮,我将创建另一个重定向到404页面.所以我正在寻找一个代替404页面的解决方案.
感谢您的阅读,我希望你们可以理解.
否则可能是您正在寻找的用途.
angular.module('MyApp',[]) .config(function($routeProvider) { $routeProvider. when('/',{templateUrl:'/home.html'}). // add as many as you want here... otherwise({templateUrl:'/404.html'}); // Render 404 view });
更新:阅读更仔细的OP问题(对不起,很早就在这里),我想我有一个替代解决方案(实际上两个):
1)隐藏内容的ng视图的主UI的$scope变量
这要求您在您的视图中显示并在您的参数中解析,然后对其他控制器执行$emit,以告诉“嘿,这个人打了404,不显示你的观点”
$routeProvider.otherwise({ controller: 'masterController',resolve: { 404: function(){ return true; }; }); angular.module('MyApp',[]) .controller('masterController',function($scope,404) { $scope.isOn404 = 404 ... }) // In the view <div ng-controller="masterController"> <div ng-hide="isOn404"> <!-- Actual content --> </div> <div ng-show="isOn404"> <!-- 404 Page --> </div> </div>
现在,这要求您拥有一个主控制器,可帮助您管理其余的UI.此外,您很可能需要执行一些编码来处理页面的其余部分,而不是仅使用ng-view(例如,显示当前标题,正文等的某些控制器).
2)自定义路由系统
我实际上已经为一个特定的项目做了这个:你有一个服务,设置一个“BackURL”和“FordwardURL”;每个$onRouteChange你存储你去哪里,你从哪里来;如果用户即将播放404,您仍然可以通过我的原始示例来呈现,但是当用户点击后,通过AngularJS捕获并渲染实际的“返回”页面.在这种情况下,我正在使用一个库,帮助我在移动设备上的路由名为Lungo和我公司使用的图书馆,即L.A.B(Lungo Angular Bridge).