Javascript Angularjs:如何创建可选的路线图参数?
在AngularJS 1.1.5中,我有两条映射路线,如下表所示: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
/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);