如何使 AngularJS 路由与 index.html/#/myPage 一起使用,如 index.html#/myPage

Posted

技术标签:

【中文标题】如何使 AngularJS 路由与 index.html/#/myPage 一起使用,如 index.html#/myPage【英文标题】:How to make AngularJS route works with index.html/#/myPage like index.html#/myPage 【发布时间】:2015-04-09 01:30:45 【问题描述】:

我当前的 iFrame 页面加载了 index.html#/myPage,它在 Chrome 或 Safari 下运行良好,但不适用于 IE 11

我在 SO 上找到了this solution: 在 # (index.html/#/myPage) 之前添加 / 即可解决您的问题

它看起来很简单,但在我的例子中,它会产生一个 404 Page not found

好像我的路由提供者不支持#前面的/,为什么?

路由代码:

appSkeleton.config(
    function ($routeProvider) 
    $routeProvider.
            when('/', 
                template: '<skeleton-manage></skeleton-manage>'
            )
            .when('/skeletonManage', 
                template: '<skeleton-display-and-manage></skeleton-display-and-manage>'
            )
           .when('/employeeManage/:employeeId/:displayMode/:idItemClick?', 
                template: '<employee-display-and-manage></employee-display-and-manage>'
            )          
            .otherwise(
                redirectTo:'/'
            );

    
);

应用程序在 Node.JS 服务器上运行

【问题讨论】:

因为您使用的任何网络服务器都将/index.html/ 视为不是/index.html 相同的资源。这是正常。您可以使用某种别名或 URL 重写在 Web 服务器级别更改此行为。取决于为该资源提供服务的内容。 你能告诉我们你的路由代码吗?以及哪个版本的 IE? 【参考方案1】:

它不适用于 app/index.html#/ 但它适用于 app/#/,您无需在 URL 上指定 index.html 或者您可以通过代码直接重定向到没有 index.html 的 URL

var url =  window.location.href;
      if(url.indexOf("index.html") > 0)
          window.location.replace(url.replace("index.html",""));

【讨论】:

以上是关于如何使 AngularJS 路由与 index.html/#/myPage 一起使用,如 index.html#/myPage的主要内容,如果未能解决你的问题,请参考以下文章

如何使用stormpath使angularjs调用nodejs api和auth

请求新页面时如何将 AngularJS 路由与 Express (Node.js) 一起使用?

如何使用 angularJS 在多个项目之间共享代码

如何在 Rails 4 中为 AngularJS 更正设置根路由?

如何将 Angular js 路由与 laravel/lumen 路由一起使用?

AngularJS - 如何验证 URL 动态参数