angularjs - 在 angularjs 中渲染 404 而不是重定向 404

标签 angularjs user-experience

我正在寻找一种很好的方法来呈现 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/

相关文章:

javascript - 将 javascript 变量导入为常量 Angular

javascript - 如何在 Angular js 中验证文本框

android - 如何从 EditText 正确触发 datePicker 和验证?

Android可用性测试——色盲

user-interface - 什么是 Twitter Bootstrap UI?

html - 我想在右下角和左下角留出间隔,以便使曲线图像更令人满意

javascript - 生成 html 的 Angular 过滤器

javascript - 如何在 Angular Controller 中访问 ons-carousel 变量?

javascript - 下拉组件的可访问性

android - AsncTask 减慢主 (UI) 线程速度