当打开html5模式时,$ routeProvider.when(' /',...)无效

时间:2016-04-29 13:24:29

标签: angularjs ngroute route-provider

解决问题的方法:你在基础标签中写的网址应该有一个斜杠。

我有以下路由配置,但是如果启用了html5模式,则不会请求模板。没有错误,也没有尝试从服务器获取资源。 更改基本网址以及使用hasPrefix('!')设置前缀都不会对此行为产生影响

   angular
        .module('beneficiaryBanks')
        .config(configRoutes);

configRoutes.$inject = ['$routeProvider','$locationProvider'];
function configRoutes($routeProvider, $locationProvider) {
    $routeProvider
        .when('/',
        {
            controller: 'beneficiaryBanksListController',
            controllerAs: 'listVM',
            templateUrl: 'BeneficiaryBanksList.cshtml'
        });
    $locationProvider.html5Mode(true);
}

看起来角度与当前网址不匹配' /'。

更新1
调试显示,对于网址http://localhost:8080/APS/Home/BeneficiaryBanksModule和基地址APS/Home/BeneficiaryBanksModule,角度将路由视为/BeneficiaryBanksModule,与/不匹配,而路由在html5时只变为/模式已禁用。

3 个答案:

答案 0 :(得分:2)

正如我所看到的here,为了实现AngularJS和IIS Express的这种组合并激活html5模式,您可能需要执行一些配置。

我不知道您是否阅读过这篇文章,但有一些提示可以让它发挥作用。

答案 1 :(得分:2)

这是因为您的请求是由服务器本身处理的,而不是由您的角度应用程序处理。

尝试阅读一些有关如何设置服务器以使用html5模式的文章:

https://dzone.com/articles/fixing-html5mode-and-angular http://www.thinkovator.com/blog/post/angularjs-html5-mode-and-iis-rewrite/

希望,这会有所帮助。

答案 2 :(得分:0)

问题出在基本标签上。如果它没有以斜杠结尾/ angular将最后一个部分视为文件名并将其删除。

这就是我看到/BeneficiaryBanksModule而不是/

的原因