Ui-router - {slug}和:slug

时间:2017-02-11 06:24:54

标签: javascript angularjs angular-ui-router

我在项目中使用ui-router,我在文档中看到了这两个:

.state('app.restaurants.index', {
      url: '/{slug}',
      controller: 'listRestaurantsController',
      templateUrl: '/app/user/views/restaurants/list.html'
})

.state('app.restaurants.index', {
       url: '/:slug',
       controller: 'listRestaurantsController',
       templateUrl: '/app/user/views/restaurants/list.html'
})

:slug{slug}之间有什么区别? 我需要在url中使用可选参数,你有什么建议吗?

2 个答案:

答案 0 :(得分:3)

我相信两者都是一样的,它只是用“/ {}”格式你可以定义将要传递的参数的类型。

url: '/{slug:int}'这里slug是int的类型,uirouter会为你输入检查参数。

如果我错了,请随时纠正我。

答案 1 :(得分:2)

他们都是一样的,服务于同一个目的。

正如文件所说:

  

使用花括号占位符定义路径参数   (/ somepath / {param})或冒号占位符(/ somePath /:param)。

参考:https://ui-router.github.io/ng1/docs/latest/classes/url.urlmatcher.html

使用大括号卷曲的好处是你也可以在其中添加正则表达式,如下所示:

  

可以在冒号后为参数定义参数RegExp   (/ somePath / {param:[a-zA-Z0-9] +})在大括号占位符中。该   正则表达式必须匹配要匹配的网址。 regexp本身应该   包含花括号,它们必须成对配对或用a转义   反斜杠。