【问题标题】:Angular $locationProvider html5Mode / <base> errorAngular $locationProvider html5Mode / <base> 错误
【发布时间】:2015-05-13 20:57:46
【问题描述】:

所以我遇到了 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”,但为我的所有静态资产保留标签?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 伙计,你为我节省了大量时间!
    猜你喜欢
    • 1970-01-01
    • 2016-08-06
    • 2017-12-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    相关资源
    最近更新 更多