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