javascript - Angular ngRoute 突然将 URL 转换为编码字符 #!/#%2F

标签 javascript angularjs ngroute

我的应用程序中的一切都工作正常,直到我尝试添加 ngAnimate、ngMaterial 和 ng-image-gallery。 我不知道添加这些模块是否是问题的根源,但在问题发生之前我没有更改任何其他内容。

从那时起(即使在我从 app.js 和 index.html 中删除依赖项之后)所有 URL 都会转换为编码字符...

之前的样子:

http://.../app/index.html#/workshops

不是它转换为:

http://.../app/index.html#!/#%2Fworkshops

当然什么也没找到。导航不起作用,没有任何反应。

为什么现在要对 URL 进行编码?!即使只是在网络服务器上运行index.html也会给我以下URL:

 http://.../app/index.html#!/

有人遇到同样的问题吗?为什么会这样呢?更重要的是:我该如何解决这个问题?!预先非常感谢。

我的路线配置:

    'use strict';

    angular.module('myApp').config(['$locationProvider', '$routeProvider',
    function($locationProvider, $routeProvider) {

    $routeProvider
    .when('/', {
        templateUrl : 'modules/start/views/start.html',
        controller: 'StartController'
    })  

    .when('/galerie', {
        templateUrl : 'modules/galerie/views/galerie.html',
        controller: 'GalerieController'
    })
    .when('/kontakt', {
        templateUrl : 'modules/kontakt/views/kontakt.html',
        controller: 'KontaktController'
    })
    .when('/workshops', {
        templateUrl : 'modules/workshops/views/workshops.html',
        controller: 'WorkshopsController'
    })  
    ;
    }]);

这里是我如何切换导航中的路线:

                <div class="navbar navbar-top hidden-xs">
                    <ul class="nav navbar-nav">
                        <li>
                            <a href='#/'>Start</a>
                        </li>                       
                        <li>
                            <a href='#/workshops'>Workshops</a>
                        </li>
                        <li>
                            <a href='#/galerie'>Galerie</a>
                        </li>
                        <li>
                            <a href='#/kontakt'>Kontakt & Buchung</a>
                        </li>
                    </ul>
                </div>

这就是脚本的包含方式:

     <script src="bower_components/angular/angular.js"></script>
     <script src="bower_components/angular-route/angular-route.js"></script>
     <script src="https://use.fontawesome.com/936815fb51.js"></script>
     <script src="app.js"></script>     
     <script src="modules/config/routes.js"></script>
     <script src="modules/start/start.js"></script>
     <script src="modules/start/controllers/StartController.js"></script>
     ...

添加 控制台什么也没说。没有问题,没有错误。

最佳答案

天哪,我刚刚找到了答案...间接地,它与添加依赖项有关,因为我将使用的 Angular 版本从 1.58 更改为 1.61 - 我刚刚读到哈希前缀更改为“!”。

回答问题的链接在这里: Angular Route - Extra # in URL

路由配置中的以下行使路由器像以前一样工作:

$locationProvider.hashPrefix('');

感谢 Arjan Einbu 在链接中回答该问题。这拯救了我的一天。

关于javascript - Angular ngRoute 突然将 URL 转换为编码字符 #!/#%2F,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41919303/

相关文章:

javascript - 未捕获的 RangeError : Maximum call stack size exceeded. jstree

angularjs - 在 ng-repeat 中显示具有重复出现次数的唯一项目

javascript - 解决 AngularJS 上的摘要溢出问题

angularjs - $routeProvider 未定义

javascript - Angular Routing ngRoute 无法提取我的其他 HTML 文件

javascript - 检测手机浏览器名称和版本

javascript - 向 CKEditor 添加自定义样式的按钮

javascript - React 中 <select> 时 onChange 事件无法按预期工作

javascript - 我们如何知道函数是从控制台还是从源代码调用的

javascript - 为什么解析方法没有向 Controller 返回任何数据?