Javascript 角度用户界面路由器初始化

Javascript 角度用户界面路由器初始化,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我正在尝试在我的应用程序中使用Angular UI路由器。当我初始化用户界面路由器而不是说,localhost:8000/#/时,我得到了localhost:8000/#!#%2F 我的app.js如下: angular .module('quiz',['ngMaterial', 'ngMessages', 'ngCookies', 'ngResource',

我正在尝试在我的应用程序中使用Angular UI路由器。当我初始化用户界面路由器而不是说,
localhost:8000/#/
时,我得到了
localhost:8000/#!#%2F

我的app.js如下:

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

angular
    .module('quiz.routes',['ui.router']);
在我的quick.routes.js中,我有:

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

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

})();

所以我得到的不是尾随斜杠!#%2F在我的URL中。这是为什么?

假设您使用的是Angular 1.6版,那么这可能是因为对默认hashPrefix进行了更改,现在将其设置为
。要修复此问题,您需要将
$locationProvider
注入模块的
config
块,并将默认hashPrefix重置回空字符串

$locationProvider.hashPrefix('')

这是,尽管事实证明它是经过设计和故意改变的

你把quize.routes注入你的主模块了吗?是的,我会编辑代码,我忘了把它添加到这里了。好吧,我不确定是否可以写一个关于这个的答案。但我认为您需要设置一个url,在您的例子中是“/”。。。如果你正在定义一个抽象状态,你将只有一个空的url。我已经发布了可能的原因,但是这可能不是全部,你可能还需要调整你的路由和链接。哦,太棒了。我现在的连接速度很慢,所以在我发表上述评论之前,我没有看到你已经接受了答案。很高兴它成功了。