$ urlRouterProvider.otherwise已空$ location.search()

时间:2015-07-14 16:31:42

标签: angular-ui-router

我已定义了某些状态,并希望使用使用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。对于这个用例,这是“必须具备的”吗?

我不确定该主题是否符合问题的根源,所以如果我错了请告诉我。

谢谢, 丹尼斯

1 个答案:

答案 0 :(得分:0)

这样做可能更容易: $urlRouterProvider.otherwise('', 'search');