【问题标题】:AngularJS UI-Router optional url segment in the middleAngularJS UI-Router 中间可选url段
【发布时间】:2017-01-12 19:15:15
【问题描述】:

我想为以下示例提供一个可选的 url 段:

url: "/post/:category/:subcategory/:title/{id:int}",

在上面的示例中,子类别是可选的。例如它将接受:

url: "/post/sports/football/some-title/10",

它也会接受:

url: "/post/sports/some-title/15",

没有子类别。我可以使用分隔状态来做到这一点,但有什么规则吗? 请注意,只有子类别段是可选的。其他是强制性的。

【问题讨论】:

    标签: javascript angularjs angular-ui-router state


    【解决方案1】:

    这里详细介绍了解决方案

    Angular js - route-ui add default parmeter

    下面是我们如何定义这样的参数:

    .state('state', {
        url: '/:category/{subcategory:(?:football|tennis|hokey)}/:title/:id',
        abstract: true,
        template: '<div ui-view=""></div>',
        params: {subcategory : { squash : true, value: 'football' }}
    })
    

    【讨论】:

    • 你能解释一下这部分(?:football|tennis|hokey)吗?实际上子类别可以是一个很长的列表。
    • 即正则表达式,子类别已知值的集合。这将有助于 UI-Router 理解,如果在这部分 /post/sports/some-title/some-title 子类别或只是另一个参数......换句话说,没有那个(它真的是必不可少的部分) UI-Router几乎无法决定...是否是子类别。所以我们需要这样的东西;)
    • 好吧,其实我不关心除了id之外的其他值。不管怎样,谢谢你的回复。
    • 是的,我理解你的意思,但正如我所说,子类别可以是一个很大的列表,并且可以动态添加到数据库中。
    【解决方案2】:

    .state('post', { url: '/post/:category/:subcategory/:title/:{id:int}', templateUrl: 'views/post.html', controller: 'postCtrl', params: { subcategory: { squash: true, value: null }, } })

    欲了解更多信息read the doc

    【讨论】:

      猜你喜欢
      • 2015-10-17
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      • 2015-11-28
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多