我正在寻找一种很好的方法来呈现 404 页面,而不是在 angularjs 中重定向 404 页面。我发现的许多解决方案都是关于重定向到另一个页面。这会产生一个问题,如果用户点击浏览器的后退按钮,我将创建另一个重定向到 404 页面。所以我正在寻找一种可以呈现 404 页面的解决方案。
感谢阅读,希望大家可以理解。
最佳答案
otherwise
的用法可能是你在找什么。
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) 一个
$scope
变量到您的 ng-view
的主 UI隐藏内容 这需要
ng-show
在您看来和 resolve
在您的参数中,然后执行 $emit
告诉其他 Controller “嘿,这家伙打了 404,不要显示你的 View ”$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>
现在,这需要您有一个主 Controller 来帮助您管理 UI 的其余部分。此外,您很可能需要进行一些编码来处理页面的其余部分,而不仅仅是使用
ng-view
(例如,一些显示当前标题、正文等的 Controller )。2)自定义路由系统
我实际上已经为一个特定的项目做了这个:你有一个设置“BackURL”和“FordwardURL”的服务;每个
$onRouteChange
你存储你去哪里,你从哪里来;如果用户即将遇到 404,您仍然可以通过我的原始示例呈现它,但是当用户回击时,通过 AngularJS 捕捉并呈现实际的“返回”页面。在这种情况下,我使用一个库来帮助我在名为 Lungo 的移动设备上进行路由。以及我工作的公司使用的图书馆 L.A.B (Lungo Angular 桥)。
关于angularjs - 在 angularjs 中渲染 404 而不是重定向 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18782149/