我在项目中使用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中使用可选参数,你有什么建议吗?
答案 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转义 反斜杠。