我已定义了某些状态,并希望使用使用otherwise
定义的回退状态/网址。因为状态没有定义根url'/'(我没有查看此状态)但是应用程序可能由此url启动并带有一些可选的查询参数,我尝试使用otherwise
的函数调用来保持可能给予参数。
但是,当调用otherwise
函数时,$location.search()
为空,但网址看起来像localhost:9002/?ac=1
。
可能副作用是将给定的网址重写为localhost:9002/?ac=1#/search
,尽管我希望将网址重写为localhost:9002/#/search?ac=1
。
$urlRouterProvider.otherwise(function($injector, $location)
{
var state = $injector.get('$state');
console.log('location', $location, 'location.search()', $location.search());
state.go('search', $location.search());
return $location.path();
});
$stateProvider
.state('search',
{
url: '/search',
templateUrl: 'templates/search.html'
})
.state('displays',
{
url: '/displays',
templateUrl: 'templates/displays.html'
})
.state('favorites',
{
url: '/favorites',
templateUrl: 'templates/favorites.html'
})
.state('detail',
{
url: '/:id',
templateUrl: 'templates/detail.html',
controller: 'DetailController'
});
这是ui-router的真正错误还是我只是以错误的方式处理这个用例?
注意我没有使用html5mode。对于这个用例,这是“必须具备的”吗?
我不确定该主题是否符合问题的根源,所以如果我错了请告诉我。
谢谢, 丹尼斯
答案 0 :(得分:0)
这样做可能更容易:
$urlRouterProvider.otherwise('', 'search');