如何使用AngularJS中的ui-router处理无效的URL参数?

时间:2014-06-26 20:15:29

标签: angularjs url-routing state angular-ui-router

我正在从状态A转换到状态planManager /:param,其中param只能是param1,param2或param3。我使用此代码进行导航:

<a href ui-sref=".({state: 'param1'})" ng-click="updateResize()" ui-sref-opts="{reloadOnSearch: false}">GO TO Param1 State</a>

现在,如果用户以某种方式点击了网址

  

parentState / planManager / invalidParam

,我想重定向到

  

parentState / planManager /参数1

在我的planManager模块中,我使用以下方法执行此操作:

angular.module( 'parentState.planManager', [
  'ui.router'
])
.config(function config( $stateProvider, $urlRouterProvider) {
  $stateProvider["state"]( 'planManager', {
    url: '/planManager/:state',
    views: {
      "main": {
        controller: 'planManagerControl',
        templateUrl: 'planManager/planManager.tpl.html'
      }
    },
    data:{ pageTitle: 'Plan Manager', currentState: 'planManager'},
    resolve:{
         validState: ['$stateParams','localStorageService','$urlRouter',function($stateParams,localStorageService,$urlRouter){
          if($stateParams["state"]!="buy" && $stateParams["state"]!="audience" && $stateParams["state"]!="campaign"){
            $stateParams["state"]="buy";
          }

          return true;
         }]
        }
  });
  $urlRouterProvider.when('/planManager/', '/planManager/buy');
  $urlRouterProvider.when('/planManager', '/planManager/buy');
  $urlRouterProvider.otherwise('/planManager/buy');
})

这似乎不起作用。这有什么不对?我应该使用某种正则表达式吗?

0 个答案:

没有答案