Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS UI路由器中的REST-like可选参数_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript AngularJS UI路由器中的REST-like可选参数

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

我有一个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
/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