3

所以我遇到了 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 文件是网站其余部分的一个目录。

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

有没有人有这个问题的解决方案?有什么方法可以让我手动为 Angular 设置“基本 href”,但为我的所有静态资产保留标签?

4

1 回答 1

2

因此,看起来 Angular 的内部工作与标签的 href 紧密耦合,如果您的目录结构像我的那样有点非传统,这会导致重大问题。

偶然发现了这个Github 线程,人们正在请求一个功能来改变它,@greglockwood 发布了一个修复程序。

通过他的修复,当您为 Angular 的东西提供自己的设置“baseHref”时,该标签可以适用于您的静态资产。

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

于 2015-05-13T21:38:37.220 回答