2016-12-22 53 views
4

爲什麼Angular有時會在URL中使用哈希值,而其他時間使用哈希值?我已經開始從頭開始編寫兩個Angular應用程序。兩者都不使用HTML5模式。兩者都有相同的默認路由。但是,默認網址顯示不同。角度哈希與Hashbang

我已經看到這種隨機行爲至少一年了......很久之前,angular-route v1.6。 另外,我一直使用angular-ui-router。

默認路由:

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

應用#1解決了這個... http://localhost:3000 ...這個... http://localhost:3000/#/

應用#2解決了這個... http://localhost:3001 ...這個... http://localhost:3001/#!/

請注意默認URL中的最後兩個字符。

我知道如何激活HTML5模式和漂亮的網址。這不是我要問的。我真的很想理解以上兩個URL的重要性,以及爲什麼Angular以不同的方式寫它們。

當前版本:
角UI路由器v0.3.2
角V1.6.0

+0

這最有可能與哈希前綴設置做 - 這可能默認取決於角度的版本,我認爲會有所不同。不確定是否有角度的路由器可能會混淆。你是否對這兩種應用使用相同的角度版本?嘗試使用$ locationProvider.hashPrefix()在應用程序的配置塊中手動設置它,並查看它對url的影響 – IAmDranged

+0

[URL hash-bang(#!/)前綴而不是簡單哈希(#/)] (http://stackoverflow.com/questions/41226122/url-hash-bang-prefix-instead-of-simple-hash) – Mistalis

回答

4

當我們從角1.5升級到1.6角,我們的應用程序的URL從/#/改爲/#!/。我們通過在應用程序配置配置hashPrefix解決了這一問題:

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