2017-02-12 144 views
1

我想在我的應用程序中使用Angular UI路由器。當我初始化UI路由器而不是說,localhost:8000/#/我得到localhost:8000/#!#%2FAngular UI路由器初始化

我app.js如下:

angular 
    .module('quiz',['ngMaterial', 
        'ngMessages', 
        'ngCookies', 
        'ngResource', 
        'quiz.routes' 
        ]).config(function($resourceProvider) { 
            $resourceProvider.defaults.stripTrailingSlashes = false; 
            }); 

angular 
    .module('quiz.routes',['ui.router']); 

在我quiz.routes.js我有!

(function() { 
    angular 
    .module('quiz.routes') 
    .config(config); 

    function config($urlRouterProvider,$stateProvider){ 
     $stateProvider 
      .state('register',{ 
       url: '', 
       templateUrl: '/static/templates/register.html' 
      }); 
    } 

})(); 

因此,而不是最後的斜線我得到#%2F我URL。爲什麼是這樣?

+0

你有沒有注入quize.routes到你的主模塊? – Sajeetharan

+0

是的,我會編輯代碼,我忘了在這裏添加它 –

+0

嗯,我不知道寫一個關於這個問題的答案。但是我認爲你需要設置一個url,在你的情況下'/'...如果你定義了一個抽象狀態,你將只有一個空的url。 – Canastro

回答

3

假設您使用的是Angular版本1.6,那麼這很可能是因爲對默認hashPrefix所做的更改,現在它設置爲!。要解決此問題,需要將$locationProvider注入到模塊的config塊中,並將默認hashPrefix重置爲空字符串。

$locationProvider.hashPrefix('') 

這是reported as a bug here,雖然事實證明,這是故意的設計和改變。

+1

感謝您的幫助。它的工作現在。 –

+0

哦,太棒了。我現在的連接速度很慢,所以在我上面評論之前沒有看到你已經接受了答案。高興它的工作。 –