2017-02-12 175 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

哦,太棒了。我现在的连接速度很慢,所以在我上面评论之前没有看到你已经接受了答案。高兴它的工作。 –