Javascript AngularJS UI路由器中的REST-like可选参数
我有一个url:/test2/foo/{int}/bar/{int}和它所导致的状态。 我试图找出在/test2/可选之后制作部件的最佳方法。显然,参数本身很容易使用挤压。但在这里,它不仅与参数有关,还与url的前面部分有关。换句话说,以下是我希望获得的有效URL:Javascript AngularJS UI路由器中的REST-like可选参数,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我有一个url:/test2/foo/{int}/bar/{int}和它所导致的状态。 我试图找出在/test2/可选之后制作部件的最佳方法。显然,参数本身很容易使用挤压。但在这里,它不仅与参数有关,还与url的前面部分有关。换句话说,以下是我希望获得的有效URL: /test2 /test2/foo/4 /test2/foo/4/bar/8 /test2/bar8 这些是无效的: /test2/meh/4/bah/8 /test2/foo /test2/foo/bar /test2/4 /t
/test2
/test2/foo/4
/test2/foo/4/bar/8
/test2/bar8
这些是无效的:
/test2/meh/4/bah/8
/test2/foo
/test2/foo/bar
/test2/4
/test2/4/8
到目前为止,我有:
$stateProvider.state('test2', {
url: '/test2/{slug1:foo}/{param1:[0-9]+}/{slug2:bar}/{param2:[0-9]+}',
template: '<div><h1>Test2</h1><h2>Param1: {{ param1 }}</h2><h2>Param2: {{ param2 }}</h2></div>',
controller: function($scope, $stateParams){
$scope.param1 = $stateParams.param1;
$scope.param2 = $stateParams.param2;
},
params: {
slug1: { squash: true, value: null },
slug2: { squash: true, value: null },
param1: { squash: true, value: null },
param2: { squash: true, value: null }
}
});
Squash文档介绍了修剪上一个/下一个斜杠的内容,因此可能就是这样。但还是很奇怪。另外,显然我不能在正则表达式中使用前导斜杠(/),所以我的手被正则表达式束缚住了
这能改进吗?有没有更好的方法来巧妙地解决这个问题
(请记住,我不希望不同的状态响应不同的url路径——这会扼杀整个要点)
/test2/foo4/bar/8
/test2/foo/4/bar8
/test2/foo4/bar8
/test2/foo4bar8