2015-05-04 2 views
1

Я настроил мой $stateProvider следующим образом:UI маршрутизатор не распознает URL

app.config(function($stateProvider,$urlRouterProvider,$locationProvider, $httpProvider){ 
    $stateProvider.state('localitySearch',{ 
     url: '/venues/in/:cityName/:localityName/:localityId/', 
     templateUrl: 'static/partials/localitysearch.html', 
     controller: 'localitySearchCtrl' 
    }); 
    $urlRouterProvider.otherwise('/'); 
    $locationProvider.html5Mode(true).hashPrefix('!'); 
    $httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 
}); 

Когда я пытаюсь попасть:

/venues/in/CityName/LocalityName/LocalityId/, он перенаправляет на главную страницу.

Тот же код работает, если использование правильный ngRoutes. Есть ли что-то, что я пропустил, это предотвращение перенаправления URL-адресов?

+0

Вы пытались ударить после '/!/Venues/in/CityName/LocalityName/LocalityId /'? –

+0

@ArpitSrivastava, я на самом деле пытаюсь использовать HTML5Mode, поэтому в моих URL-адресах нет '!'. – Newtt

+0

проверить этот URL http://stackoverflow.com/questions/16677528/location-switching-between-html5-and-hashbang-mode-link-rewriting –

ответ

2

Концепция работает. Существует a working plunker.

Так с этим определения состояния (почти то же самое, что и выше):

$urlRouterProvider.otherwise('/home'); 

$stateProvider 
    .state('localitySearch',{ 
    url: '/venues/in/:cityName/:localityName/:localityId/', 
    templateUrl: 'static/partials/localitysearch.html', 
    controller: 'localitySearchCtrl' 
    }) 
    .state('home', { 
    url: "/home", 
    templateUrl: 'tpl.html', 
    }) 

$locationProvider.html5Mode({enabled:true, requireBase: false}).hashPrefix('!'); 
$httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 

Эти ссылки будут работать:

// href 
<a href="{{plnkr}}venues/in/cityName/localityName/localityId/"> 
// ui-sref 
<a ui-sref="localitySearch({cityName:'Liberec', localityName:'Czech', localityId:'CZ'})" 

Замечание: при {{plnkr}} это просто способ, как знать сгенерированный URL-адрес в плунжере:

.run(['$rootScope', 
    function ($rootScope,) { 
    $rootScope.plnkr = document.location.pathname; 
}]) 

Проверьте это в действии here

+0

Я использовал 'window.location.href' для изменения URL-адресов в некоторых местах, где это было нарушено. В тот момент, когда я перешел в '$ state.go', все началось правильно. Странное поведение. – Newtt

Смежные вопросы