【问题标题】:Angular.JS 404 page Single Page AppAngular.JS 404 页面单页应用
【发布时间】:2015-07-03 15:48:56
【问题描述】:

任何人都可以为我指出如何在 angularJS 中为单页应用程序制作“404 - 找不到页面”教程的正确方向。

或者更好地解释如何实现这一点。

互联网上似乎没有太多关于此的内容。

【问题讨论】:

  • 你用的是什么路由器,什么版本的 Angular?
  • 使用路由系统重定向到404页面
  • 你的意思是找不到路由还是找不到模板?
  • templateURL Not found Nikhil
  • 我正在使用 AngularJS v1.3.15

标签: javascript angularjs


【解决方案1】:

在使用本机路由器的 Angular SPA 中,如果找不到路由,它将触发 $routeProvider.otherwise() 方法,从而为从服务器传递的通常具有 404 的路由加载视图。

angular.app('application', ['ngRoute'])
    .config(['$routeProvider', function($routeProvider) {

        // If route is not configured go to 404 route
        $routeProvider.otherwise('/404');

        $routeProvider.when('404', { /* route configuration */ });

    });

这里唯一的缺点是 URL 的推送状态也发生了变化,但是如果服务器重定向到自定义 404,这通常会发生。

【讨论】:

  • 因此,如果找不到 templateURL 并返回 404 错误,此脚本会将它们重定向到 404 页面
  • 不,不是那种情况。如果找不到 templateUrl,Angular 会出错。理论上,您可以捕获该错误并重定向到 404。您可以发布您拥有的模板加载代码吗?
【解决方案2】:

我不会将其视为 404 页面。

在您的 SPA(单页应用程序)中,您可以进行多个 API 调用,以独立更新仪表板上的小部件,其中 10 个中的 9 个成功(200 个),一个失败(404 个),在这种情况下,您不想重定向用户。

正如 David Barker 所说,您有一个 otherwise 这是一个包罗万象的页面。

app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/login', {
        templateUrl: 'login.template.html',
        controller: 'LoginController'
      }).
      when('/', {
        templateUrl: 'dashboard.template.html',
        controller: 'DashboardController'
      }).
      otherwise({
        redirectTo: '/'
      });
  }]);

所以如果用户输入了错误的路线然后转到仪表板,唯一的问题是反馈:

1:您需要一个消息服务来反馈实际的 API 404 有错误响应,并且可以使用拦截器、指令和模型进行管理。

2:您可以通过使用run方法以及查找$routeChangeError然后添加错误消息的相同指令和模型来反馈错误消息

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多