UI路由器无法识别URL

时间:2015-05-04 14:35:14

标签: angularjs angular-ui-router angular-routing

我已将$stateProvider设置如下:

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,相同的代码可以正常工作。是否有一些我错过了阻止网址重定向的内容?

1 个答案:

答案 0 :(得分: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}}只是了解如何知道plunker中生成的网址:

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

检查行动here

相关问题