2

我正在开发一个使用 Angular UI-Router 进行路由和维护状态的 Angular 应用程序。我很难让我的单元测试甚至编译。似乎无论我做什么,我都会收到以下错误:

Error: State '' is not navigable

我在我的应用程序中设置了以下状态,以及以下重定向:

app.config(function($stateProvider, $urlRouterProvider) {

var paramList = '?beds&lat&lon&zoom';

$urlRouterProvider
    .when('', '/')
    .when('/', '/search')
    .when('/search', '/search/list')
    .otherwise('');

$stateProvider
    .state('search', {
        abstract: true,
        url: '/search',
        templateUrl: 'views/search.html',
        controller: 'SearchCtrl'
     })
        .state('search.list', {
            url: '/list' + paramList,
            templateUrl: 'views/search-list.html'
         })
        .state('search.map', {
            url: '/map' + paramList,
            templateUrl: 'views/search-map.html'
        })
    .state('search.listing', {
        url: '/listing/:id' + paramList,
        templateUrl: 'views/search-listing.html'
    })
    .state('favorites', {
        url: '/favorites',
        templateUrl: 'views/favorites.html'
    })
});

我花了一整天的时间试图让一个测试工作,但无论我采取什么方法,我总是会遇到同样的错误。我有一个运行良好的 e2e 测试。

4

2 回答 2

1

ui-router 自动添加内部状态'',这就是您遇到的错误。我建议'/'为基本状态添加一个 url,并将“否则”调用更改为重定向到“/”而不是“”。由于您的呼叫'',正在尝试内部状态。.otherwise('')所以也许试试这个:

$urlRouterProvider
.when('/', '/search')
.when('/search', '/search/list')
.otherwise('/');
于 2013-07-30T00:05:57.513 回答
0

乍一看,我会说 $stateProvider 似乎在告诉您需要在其中放置一个空状态。将此添加到状态列表中。

state( '', { ... } )
于 2013-07-16T06:11:37.983 回答