Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Angularjs 如何在angular ui router中定义regex参数,以便仅从一组已定义的字符串中拾取_Angularjs - Fatal编程技术网

Angularjs 如何在angular ui router中定义regex参数,以便仅从一组已定义的字符串中拾取

Angularjs 如何在angular ui router中定义regex参数,以便仅从一组已定义的字符串中拾取,angularjs,Angularjs,我希望处于特定状态的angular ui router仅在参数为以下字符串之一时才能输入: 地点1 站点2 地点3 这是我的状态: $stateProvider.state("error", { url: '/error/{sub: (site1 | site2 | site3)}', templateUrl: 'views/error.html', controller: 'ErrorCtrl' }); 但出于某种原因,这不起作用。 如何正确地定义这个正则表达式?我发

我希望处于特定状态的angular ui router仅在参数为以下字符串之一时才能输入:

地点1 站点2 地点3

这是我的状态:

$stateProvider.state("error", {
    url: '/error/{sub: (site1 | site2 | site3)}',
    templateUrl: 'views/error.html',
    controller: 'ErrorCtrl'
});
但出于某种原因,这不起作用。 如何正确地定义这个正则表达式?

我发现了问题

根据angular ui router的文档:

不要在正则表达式模式中插入捕获括号,否则 ui路由器中的UrlMatcher在整个正则表达式周围添加这些自身。 您实际上是在为同一目标引入第二个捕获组 参数,该参数将子URL中的编号上移。你可以用 但非捕获组,即?:。。。很好

所以解决办法就是把它们取下来

我还必须删除所有空格,因为它们实际上代表字母

$stateProvider.state("error", {
    url: '/error/{sub:site1|site2|site3}',
    templateUrl: 'views/error.html',
    controller: 'ErrorCtrl'
});