【发布时间】:2014-11-28 03:05:59
【问题描述】:
我添加了一个when() 方法来设置/验证路由前缀,如下所示:
$urlRouterProvider.when(/[a-z]{2}-[a-z]{2}/, [
'$match','myValidatorSrv',
function($match, myValidatorSrv) {
if ( myValidatorSrv.validate($match[0]) ) return true;
// …
return $match.input.replace($match[0],'en-us');
}
]);
$urlRouterProvider.when(/(?![a-z]{2}-[a-z]{2})/, [
'$match','myValidatorSrv',
function($match, myValidatorSrv) {
// …
return $match.input.replace('/', '/en-us/');
}
]);
重写如我所料,我得到/en-us/home (GET /home)。
我的状态是这样设置的:
$stateProvider
.state('base', {
abstract: true,
url: '/{locale}'
})
.state('base.home', {
url: '/home',
views: {
'home@': {
templateUrl: '/partials/home.html'
}
}
});
问题是,使用when()s,状态不再匹配(视图没有被加载);即使我手动转到/en-us/home,状态仍然没有被触发。
我需要做一些特别的事情来让 $state 重新评估吗?
【问题讨论】:
标签: javascript angularjs rewrite angular-ui-router