angularjs - $locationProvider.html5Mode(true) 问题

标签 angularjs angular-ui-router

一直在处理我遇到的一些 $locationProvider 问题。我有一个简单的单页页面。但我收到以下错误:

     TypeError: Cannot read property 'replace' of undefined
        at trimEmptyHash (angular.js:10551)
        at Object.$locationWatch (angular.js:11399)
        at Scope.$get.Scope.$digest (angular.js:14217)
        at Scope.$get.Scope.$apply (angular.js:14488)
        at bootstrapApply (angular.js:1449)
        at Object.invoke (angular.js:4182)
        at doBootstrap (angular.js:1447)
        at bootstrap (angular.js:1467)
        at angularInit (angular.js:1361)
        at HTMLDocument.<anonymous> (angular.js:26065)

我的 app.js 文件非常简单...
    var app = angular.module('app',
        [
            'ui.router'
        ]
    );

    app.config([
        '$stateProvider',
        '$httpProvider',
        '$locationProvider',
        '$urlRouterProvider',
        function ($stateProvider, $httpProvider, $locationProvider, $urlRouterProvider) {

            $locationProvider.hashPrefix('!');
            $locationProvider.html5Mode(true);

            $stateProvider
            .state('home',
            {
                url: '/',
                views: {
                    'aboutView':
                        {
                            template: function (params) {
                                console.log("home");
                                return 'home';
                            }
                        }
                }
            })
            .state('about',
            {
                url: '/about',
                views: {
                    'aboutView':
                        {
                            template: function (params) {
                                console.log('about')
                                return 'about';
                            }
                        }
                }
            })
            ;
        }
    ]);

我有 <base href="http://localhost/apps/uiv8/" />在我的 index.html 文件中设置。因此,当我注释掉 $locationProvider 代码时,在 # 模式下一切正常。我可以毫无问题地访问/#/about 等。一旦我把 $locationProvider 部分放回去,什么都没有。

多一点关于我的环境......我们在这里确实有asp.net的MVC,并且route.config正在做一个{*url}来重定向所有到默认路由,我什至已经走了使用 url 重写修改 IIS 以发送到默认值,但我仍然收到上面的解析错误。

那么,有人知道发生了什么吗?

谢谢,
缺口

最佳答案

在您的索引页面中添加基本标签,如:

<base href="/">

代替 :
<base href="http://localhost/apps/uiv8/" />

希望它能解决你的问题。

关于angularjs - $locationProvider.html5Mode(true) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28859276/

相关文章:

AngularJS UI-Router 改变依赖模块的状态

javascript - 无法将变量从 ui-router 解析对象解析到 Controller 中

javascript - 使用淡入和延迟以及 ng-repeat 来显示列表项

javascript - 如何使用聚合MongoDB获取数据Mongo数据

javascript - 在向前迭代之前等待调用函数完成

javascript - UI-Router 状态 : How to make app. 使用 $rootScope.$ 在缩小安全上运行

angularjs - angular-ui-router 嵌套 View 和 "RangeError: Maximum call stack size exceeded"

javascript - 使用 javascript 使用排序函数而不使用 lambda 函数

javascript - 输入字段,强制格式 00 :00. 00

javascript - 如何使用动态 url (slugs) 和 ng-include 在 Angular JS 中正确返回 404?