我在我的州使用以下网址:
.state('forum.spesific', {
url: '/:articleId ONLY BY NUMBER',
templateUrl: 'modules/forum/client/views/forum.client.view.html',
controller: 'forumController',
controllerAs: 'vm',
})
.state('forum.spesific', {
url: '/:articleId BOTH ( have to be both)',
templateUrl: 'modules/forum/client/views/forum2.client.view.html',
controller: 'forumController',
controllerAs: 'vm',
})
我怎样才能让其中一个依赖于:articleId只是数字,以及数字和字符的其他组合?
像:
Class A{
public A(){
initialize();
}
public void initialize(){
//code goes here
}
}
答案 0 :(得分:0)
您可以使用regex-like
语法:'/articles/{id:int}'
,它只匹配整数。
顺便说一句,这不是非常安全,因为id(例如:bigInt
)可能超出了javascript安全整数范围... https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
答案 1 :(得分:0)
您可以像这样指定正则表达式:
.state('forum.spesific', {
url: '/{articleId:[0-9]+}',
templateUrl: 'modules/forum/client/views/forum.client.view.html',
controller: 'forumController',
controllerAs: 'vm',
})
.state('forum.spesific2', {
url: '/{articleId:[a-zA-Z0-9]+}',
templateUrl: 'modules/forum/client/views/forum2.client.view.html',
controller: 'forumController',
controllerAs: 'vm',
})
但为什么2说明唯一的区别是id类型?
答案 2 :(得分:0)
也许您可以将这两种状态合并为相同并更改templateUrl
templateUrl: function (stateParams){
if(isNaN(stateParams.articleId)){
return "modules/forum/client/views/forum2.client.view.html"
} else {
return "modules/forum/client/views/forum.client.view.html";
}
}
希望这有帮助