У меня есть NavigationController, у которого есть selectedItem для текущего выбранного элемента в списке навигации. Он использует $location.path(), чтобы попытаться установить значение по умолчанию. Это в режиме хэш-бэнга. Вот упрощенная версия:
App.controller("NavigationController", ['$scope', '$location', function($scope, $location) {
$scope.currentSelection = $location.path() || "/dashboard";
$scope.select = function( name ) {
$scope.currentSelection = name;
}
}]);
И html:
<body ng-app="App">
<div class="container-fluid absoluteFill">
<div class="row-fluid fill" ng-controller="NavigationController">
<div class="span2 nav-bubble fill">
<ul class="nav nav-list">
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
</ul>
</div>
<div ng-view></div>
</div>
</div>
</body>
И конфиг:
angular.module("App", ["ngResource"])
.config(function($routeProvider) {
$routeProvider.
when( '/', { redirectTo: '/dashboard' }).
when( '/dashboard', {
controller: 'DashboardController',
templateUrl: '/gpa/app/views/dashboard.html'
}).
otherwise({redirectTo: '/'});
})
Проблема в том, что когда я перехожу к /home/index (без хеш-банга), $location.path() возвращает «/index», где он раньше возвращал null до 1.1.15. Однако, если я перехожу к «/home/index#/dashboard», он возвращает «/dashboard», как и ожидалось. Я пытался перенаправить, когда кто-то переходит к «/» на «/dashboard», но NavigationController вызывается до перенаправления, поэтому он продолжается. чтобы получить "/индекс".
Итак, как я могу хотя бы сказать, когда хеш-банг не включен? $location.hash() всегда возвращает "". Я не хочу жестко кодировать «/index» в своем коде, чтобы знать, когда в URL-адресе ничего нет.
redirectTo: "/
это опечатка? Разве это не должно бытьredirectTo: "/"
? - person starcodex   schedule 21.06.2013