2015-09-09 60 views
1

爲什麼AngularJS重寫地址欄,當我進入爲什麼AngularJS改寫hashbang

www.domain.com/index.html/#!/content/sub/content 

www.domain.com/index.html#/!/content/sub/content 

/#/!不是標準的hashbang語法..我想保留它作爲#!/ content/subcontent然後用自定義函數解析url。

我已經試過

$location.html5Mode = false; 

angular.module('locationModule', []) 

    .config(function($routeProvider, $locationProvider) { 
     //$locationProvider.hashPrefix('!'); 
     $locationProvider.html5Mode = false; 
    }); 

這既不似乎有所作爲。

+0

您尚未將'!'定義爲hashprefix。默認路由不使用'!',除非你告訴它 – charlietfl

回答

1

默認情況下禁用HTML5模式。如果你不想要/#/,這個前綴是由用戶設置的。

$locationProvider.html5Mode(false).hashPrefix('!');

+0

謝謝。我還需要包含angular-route.js – colouredFunk

0

$ locationProvider,這是角的核心組成部分,配置應用程序的路徑。默認情況下,Angular前綴爲#!的路由,稱爲Hashbang模式。這是一個約定,用於顯示頁面加載是由JavaScript觸發的。

我下面的代碼添加到我的配置功能的應用程序/腳本/ app.js文件

下面的代碼添加到配置功能:

(function() { 
     function config($stateProvider, $locationProvider) { 
     $locationProvider 
      .html5Mode({ 
       enabled: true, 
       requireBase: false 
      }); 
     } 

通過html5Mode方法的enabled屬性設置爲true,hashbang網址被禁用;也就是說,用戶將看到沒有hashbang的乾淨URL。將requireBase屬性設置爲false與hashbang問題無關,但是避免公共$位置錯誤的一種方法。