Angularjs状态url依赖于数字url

时间:2016-09-13 11:53:05

标签: javascript angularjs

我在我的州使用以下网址:

  .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
  }
}

3 个答案:

答案 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"; } }

希望这有帮助