【问题标题】:Angular Hash versus HashbangAngular Hash 与 Hashbang
【发布时间】:2016-12-22 15:02:04
【问题描述】:

为什么 Angular 有时在 URL 中使用散列,而有时使用散列?我已经开始从头开始编写两个 Angular 应用程序。两者都没有使用 HTML5 模式。两者都有相同的默认路由。但是,默认 URL 的显示方式不同。

我已经看到这种随机行为至少一年了……早在 angular-route v1.6 之前。 另外,我一直使用 angular-ui-router。

默认路由:

configRoutes.$inject = ['$urlRouterProvider'];
function configRoutes ($urlRouterProvider) {
    $urlRouterProvider.otherwise('/');
}

App #1 解决了这个问题... http://localhost:3000 ……到这…… http://localhost:3000/#/

App #2 解决了这个问题... http://localhost:3001 ……到这…… http://localhost:3001/#!/

注意默认 URL 中的最后两个字符。

我知道如何激活 HTML5 模式和漂亮的 URL。这不是我要问的。我真的很想了解上述两个 URL 的重要性以及为什么 Angular 以不同的方式编写它们。

当前版本:
angular-ui-router v0.3.2
角度 v1.6.0

【问题讨论】:

  • 这很可能与哈希前缀设置有关 - 默认值可能会因我认为的角度版本而异。不确定角度 ui 路由器是否会混淆。您是否对两个应用程序使用相同的角度版本?尝试使用 $locationProvider.hashPrefix() 在应用程序的配置块中手动设置它,看看它如何影响 url

标签: angularjs angular-ui-router angularjs-1.6


【解决方案1】:

当我们从 angular 1.5 升级到 angular 1.6 时,我们应用的 URL 从 /#/ 更改为 /#!/。我们通过在应用程序配置中配置 hashPrefix 解决了这个问题:

angular.module("myApp").config(function($locationProvider) {
   $locationProvider.hashPrefix("");  
});

【讨论】:

    猜你喜欢
    • 2015-12-14
    • 2014-01-08
    • 2016-03-23
    • 2012-03-09
    • 2011-09-25
    • 1970-01-01
    • 2020-11-28
    • 2014-08-31
    • 2018-08-07
    相关资源
    最近更新 更多