Angularjs的状态url依赖于数值url

Angularjs state url rely on numeric url

本文关键字:url 依赖于 Angularjs 状态      更新时间:2023-09-26

我在我的状态下使用以下url:

    .state('forum.spesific', {
      url: '/:articleId',
      templateUrl: 'modules/forum/client/views/forum.client.view.html',
      controller: 'forumController',
      controllerAs: 'vm',
    })
.state('forum.spesific2', {
      url: '/:articleId',
      templateUrl: 'modules/forum/client/views/forum2.client.view.html',
      controller: 'forumController',
      controllerAs: 'vm',
    })

我怎样才能使其中一个依赖于:articleId只是数字,而另一个是数字和字符的混合?

:

  .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',
        })

您可以使用regex-like语法:'/articles/{id:int}',它只匹配整数。顺便说一句,这不是很安全,因为id(例如:bigInt)可以超出javascript安全整数范围…https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger

也许你可以将这两种状态合并为同一状态,并更改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"; } }

希望能有所帮助

你可以这样指定正则表达式:

 .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',
    })

但如果唯一的区别是id类型,为什么要用2个状态呢?