默认ngRoute重定向后,Window.location.href丢失

时间:2015-12-08 11:18:50

标签: javascript angularjs

我有这个简单的Angular应用程序和ngRoute,定义了一个单独的路径,并且默认重定向到相同的(在index.html中):

<script src="http://code.angularjs.org/1.2.14/angular.min.js"></script>
<script src="https://code.angularjs.org/1.2.28/angular-route.min.js"></script>

<script>
var app = angular.module('myApp', ['ngRoute']);

app.run(function($rootScope) {
    $rootScope.location = window.location.href.substring(0, window.location.href.lastIndexOf('#'));
});

app.config(function ($routeProvider) {
    $routeProvider
        .when('/page', { 
          controller: 'PageController', 
          templateUrl: 'page.html'
        })
        .otherwise({ 
          redirectTo: '/page' 
        }); 
});

app.controller('PageController', function ($scope, $rootScope) {

});          
</script>


<div ng-app="myApp">
    <div ng-view></div>
</div>

page.html显示$ rootScope.location:

{{$root.location}}

当我直接使用index.html#/page访问该页面时,它会按预期显示该位置,但仅在index.html访问该页面后,我将其重定向到index.html#/page,{ {1}}仍为空。

有人能解释我为什么吗?

1 个答案:

答案 0 :(得分:0)

同时,我找到了。

window.location.href.lastIndexOf('#')在通过index.html访问时返回-1,并且语句返回从0到-1的子字符串,该字符串为空。