1

我正在尝试使用 $routeProivder 配置角度路由

所以我有

$routeProvider
.when('/title', {
templateUrl: 'views/title.html',
})
.when('/title/article-name', {
templateUrl: 'views/article-name.html',
})

但是,使用 $locationProvider.html5Mode(true),它会找到页面模板,但不会找到每个链接图像 js css 文件,因此我的布局被搞砸了(我的页眉和页脚在我的 index.html 中,模板是从ng-视图)。此外,当我单击链接时,它会显示“无法获取 /title/article-name/sample.js”

我的问题是如何使用角度进行多级路由。

就像“www.domain.com/why-us/our-company/our-goal”之类的东西。谢谢

4

1 回答 1

1

除了设置之外html5Mode(true),您还需要设置服务器以支持 HTML5 模式中的酷 URL。请参阅下面的官方 AngularJS 文档的解释:

服务器端 使用此模式需要在服务器端重写 URL,基本上你必须重写所有指向应用程序入口点的链接(例如 index.html)

这意味着您需要将任何静态资源重定向到应用程序的起点。

假设您sample.js位于您网站的根目录上www.domain.com

服务器需要重写此文件的 URL 以指向http://www.domain.com/sample.js而不是http://www.domain.com/title/article-name/sample.js

根据您使用的服务器类型,在服务器端有不同的方法。这样做的常用方法是从带有/static前缀的 URLS 中提供所有静态资源,并告诉服务器重写到该文件夹​​的所有链接。

在客户端,我看到了一些<base href="/" /><head>.

HTML <base> 元素指定用于文档中包含的所有相对 URL 的基本 URL。

您可以尝试看看它是否适合您 - 请记住,因为在客户端,您需要查看跨浏览器对此的支持。

我个人会建议服务器端解决方案。

    <html>
      <head>
        <base href="/" />
      </head>
      ....
    </html>
于 2013-09-30T17:19:58.403 回答