我想制作一个有强制参数的路线.如果没有,它应该落入
$urlRouterProvider.otherwise( “/家”);
目前的路线:
function router($stateProvider) { $stateProvider.state("settings",{ url: "^/settings/{id:int}",views: { main: { controller: "SettingsController",templateUrl: "settings.html" } } }); }
目前以下两条路线均有效:
> http://myapp/settings //应该是无效的路线
> http://myapp/settings/123
有任何想法吗?
解决方法
使用
state change start listener检查params是否通过:
$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); } });