我有这个简单的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}}仍为空。
有人能解释我为什么吗?
答案 0 :(得分:0)
同时,我找到了。
window.location.href.lastIndexOf('#')
在通过index.html
访问时返回-1,并且语句返回从0到-1的子字符串,该字符串为空。