所以我遇到了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”,但是为我的所有静态资产单独留下标签?
答案 0 :(得分:2)
因此,看起来Angular的内部工作与标签的href紧密耦合,如果你的目录结构与我的一样有点不同寻常,会导致重大问题。
偶然发现Github thread人们要求更改此功能的功能,而@greglockwood发布了修复程序。
通过他的修复,标签可以为您的静态资产工作,同时为Angular的东西提供自己的“baseHref”设置。
对我来说就像一个魅力!希望这有助于任何偶然发现这一点的人!