Angualar ui-router自动改变路由

时间:2015-10-09 10:23:36

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

我在角度状态变化期间遇到问题

我的状态配置如下:

 function($stateProvider) {
    $stateProvider
        .state('monetization', {
            url: '/monetization',
            templateUrl: 'app/modules/monetization/monetization.html',
            controller: 'MonetizationCtrl'
        })
        .state('monetization.configurationGeneral', {
            url: '^/monetization/configuration/general',
            templateUrl: 'app/modules/monetization/configuration/general/general.html',
            controller: 'MonetizationConfigurationGeneralCtrl',
        })
        .state('monetization.configurationVersion', {
            url: '^/monetization/configuration/version',
            templateUrl: 'app/modules/monetization/configuration/version/version.html',
            controller: 'MonetizationConfigurationVersionCtrl',
        })
        .state('monetization.categorySearch', {
            url: '^/monetization/configuration/categorySearch',
            templateUrl: 'app/modules/monetization/configuration/category/categorySearch.html',
            controller: 'MonetizationCategorySearchCtrl',
        })
        //Provider Configuration
        .state('monetization.providerList', {
            url: '^/monetization/provider/list',
            templateUrl: 'app/modules/monetization/provider/providerList.html',
            controller: 'MonetizationProviderListCtrl',
        })
        .state('monetization.providerDetails', {
            url: '^/monetization/providerDetails/:providerId',
            templateUrl: 'app/modules/monetization/provider/providerHistory.html',
            controller: 'ProviderHistoryCtrl',
            params: {
                providerId: null
            }
        });
}

我会自动从 monetization.categorySearch 重定向到 montetization.providerList

我没有任何线索请帮助..

1 个答案:

答案 0 :(得分:1)

我可以确认,你的州定义是否正常 - 没有开启REDIRECT。因此,它必须在其他地方 - 而不是$stateProvider配置。

检查this plunker,看看所有这些链接是否按预期工作:

<a href="#/monetization">
<a href="#/monetization/configuration/general">
<a href="#/monetization/configuration/categorySearch">
<a href="#/monetization/provider/list">

<a ui-sref="monetization">
<a ui-sref="monetization.configurationGeneral">
<a ui-sref="monetization.categorySearch">
<a ui-sref="monetization.providerList">

检查here

注意我上面看到的小问题是拼写错误“montetization.providerList”

  

我会自动从 monetization.categorySearch 重定向到 montetization.providerList

应该是monetization.providerList(不是monte ...),但它不应与该问题相关

建议,仔细检查所有event挂钩,如:

$rootScope.$on('$stateChangeStart', function(evt, to, params) {

    ...
    $state.go('monetization.providerList')

});

(例如检查:Redirect a state to default substate with UI-Router in AngularJS

还有url提供商上的.when设置

$urlRouterProvider.when('/monetization/configuration/categorySearch'
                      , '/monetization/provider/list');

(例如检查:Angular UI-Router $urlRouterProvider .when not working when I click <a ui-sref="...">