Angular $ locationProvider html5Mode / <base />错误

时间:2015-05-13 20:57:47

标签: javascript angularjs url-routing html5-history base-tag

所以我遇到了Angular 1.3.15和$ locationProvider的问题。每次我打开html5mode时都会出现TypeError: Cannot read property 'replace' of undefined错误。如果我关闭html5mode,一切正常。

我的目录结构是这样的( 4.DEV是版本化目录名):

public /
    - index.html
    4.DEV /
        css /
        js /
        images /
        partials /
        etc...

我有一个这样的基本标签:

<base href="/4.DEV/">

我正在配置$ locationProvider,如下所示:

$locationProvider.html5Mode({ enabled: true });

如果我将基本标记href更改为"/" Angular没有任何问题(但我的资源不会加载)。我怀疑Angular问题涉及的事实是我的index.html文件是网站其他部分的一个目录。

由于我不会在此列出的原因,我无法更改此dir结构,我真的不想更改基本标记(因为我不想手动将版本号粘贴到所有这些文件中) 。我也想留下html5mode。

有没有人能解决这个问题?有没有办法让我手动为Angular设置“base href”,但是为我的所有静态资产单独留下标签?

1 个答案:

答案 0 :(得分:2)

因此,看起来Angular的内部工作与标签的href紧密耦合,如果你的目录结构与我的一样有点不同寻常,会导致重大问题。

偶然发现Github thread人们要求更改此功能的功能,而@greglockwood发布了修复程序。

通过他的修复,标签可以为您的静态资产工作,同时为Angular的东西提供自己的“baseHref”设置。

对我来说就像一个魅力!希望这有助于任何偶然发现这一点的人!