Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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:如何创建可选的路线图参数?_Javascript_Regex_Angularjs_Angularjs Routing - Fatal编程技术网

Javascript Angularjs:如何创建可选的路线图参数?

Javascript Angularjs:如何创建可选的路线图参数?,javascript,regex,angularjs,angularjs-routing,Javascript,Regex,Angularjs,Angularjs Routing,在AngularJS 1.1.5中,我有两条映射路线,如下表所示: /category/:name/:article /category/:name 我只想要最新的,并将param:文章发送到action。这个动作实际上是在扩展列表中的一个元素,所以我不需要重新加载控制器,等等,或者让我们想象一下,在其他情况下,例如运行动画。例如,假设我有一个幻灯片,我想展示第5张幻灯片——这类东西!不需要重新加载所有内容 路线(我使用的是滑块示例,因为它比较容易混淆): 然后在.run()或.con

在AngularJS 1.1.5中,我有两条映射路线,如下表所示:

 /category/:name/:article 

 /category/:name
我只想要最新的,并将param:文章发送到action。这个动作实际上是在扩展列表中的一个元素,所以我不需要重新加载控制器,等等,或者让我们想象一下,在其他情况下,例如运行动画。例如,假设我有一个幻灯片,我想展示第5张幻灯片——这类东西!不需要重新加载所有内容

路线(我使用的是滑块示例,因为它比较容易混淆):

然后在.run()或.controller()上

经过一些研究,我找到了一个可能的解决方案:

模式

"/foo/bar/das".match("\/foo\/([^\/]+)(\/[^\/]+)?") 
返回三个参数,如果最后一个参数被省略,则仅返回两个参数,但我会得到额外的“/”,如[“foo”、“bar”、“das”]和[“foo”、“bar”,未定义]。不过,我可以处理额外的“/”了

这个很好用:

"/foo/bar".match("\/foo\/([^\/]+)(?:\/([^\/]+))?")
重要提示: 经过一些测试并找到了模式,目前看来AngularJS 1.15$routeProvider并不真正支持它?我发布了这篇文章,认为如果只为/foo/:bar/:das保留一个routeMapper,其中第三个参数是可选的,那么就可以作为/foo/:bar使用,然后在locationChange()上使用regex。我已经在这里以一种清晰的方式发布了我的问题,我已经有了一个-1,但老实说我不明白为什么,我认为知道如何以AngularJs的方式来做这件事是有用的

感谢您的帮助


谢谢查看:)

要使两个参数都可选,您可以使用:

var m = path.match(/issue(?:\/([^/]*))?(?:\/([^/]*))?/i);

感谢您查找@anybhava我将测试您的模式:)刚刚更改了一个输入错误,我已将“问题”更改为“滑块”或“foo”谢谢:确保您可以使用:
path.match(/slider(?:\/([^/]*))?(?:\/([^/]*)?/I)
"/foo/bar".match("\/foo\/([^\/]+)(?:\/([^\/]+))?")
var m = path.match(/issue(?:\/([^/]*))?(?:\/([^/]*))?/i);