如何设置强制路由参数

Nob*_*ody 5 angular-ui-router

我想制作一个有强制参数的路线.如果没有,它应该落入

$urlRouterProvider.otherwise("/home");

目前的路线:

function router($stateProvider) {
        $stateProvider.state("settings", {
            url: "^/settings/{id:int}",
            views: {
                main: {
                    controller: "SettingsController",
                    templateUrl: "settings.html"
                }
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

目前以下两条路线均有效:

  1. http:// myapp/settings //应该是无效的路由
  2. HTTP:// MYAPP /设置/ 123

有任何想法吗?

Fro*_*yon 0

使用状态更改启动侦听器检查参数是否已传递:

  $rootScope.$on('$stateChangeStart',
                function (event, toState, toParams, fromState, fromParams) {
      if(toState.name==="settings")
      {
          event.preventDefault(); //stop state change
          if (toParams.id===undefined)
           $state.go("home");
          else
           $state.go(toState, toParams);

      }
  });
Run Code Online (Sandbox Code Playgroud)