#angularjs #url-routing #state #angular-ui-router
#angularjs #url-маршрутизация #состояние #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>
Теперь, если каким-то образом пользователь попадает на URL
parentState/planManager/InvalidParam
, я хочу перенаправить на
parentState/planManager/param1
В моем модуле 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" amp;amp; $stateParams["state"]!="audience" amp;amp; $stateParams["state"]!="campaign"){
$stateParams["state"]="buy";
}
return true;
}]
}
});
$urlRouterProvider.when('/planManager/', '/planManager/buy');
$urlRouterProvider.when('/planManager', '/planManager/buy');
$urlRouterProvider.otherwise('/planManager/buy');
})
Похоже, это не работает. Что здесь не так? Должен ли я использовать какое-то регулярное выражение?
Комментарии:
1. Ты до этого додумался?
2. Добавлен $urlRouter.sync(); после $stateParams[«state»]=»buy»;