AngularJS路线:为同一路线设置多个参数值

时间:2018-11-28 16:34:31

标签: angularjs

我想知道AngularJS是否可以做这样的事情:

我目前有一条路线,该路线的第一个参数称为“资源”,可以是“设备”或“组”。还有一个名为“ id”的第二个参数,但这并不重要。使用以下代码,该路由接受任何内容作为第一个参数:

.when("/templates/:resource/:id", {
            templateUrl: "/templates/views/navigation/templates.html",
            controller: 'ctrlTemplates',
            tab: "templates",
        })

这使我可以在控制器中检查第一个参数的值是'device'还是'group'。我想摆脱此验证部分,如果可能的话,不创建两条路由:

.when("/templates/group/:id", {
                templateUrl: "/templates/views/navigation/templates.html",
                controller: 'ctrlTemplates',
                tab: "templates",
            })
.when("/templates/device/:id", {
                templateUrl: "/templates/views/navigation/templates.html",
                controller: 'ctrlTemplates',
                tab: "templates",
            })

所以我的问题是,使用一个路由是否可以有多个URL?例如这样的东西:

.when("/templates/('device'|'group')/:id", {
            templateUrl: "/templates/views/navigation/templates.html",
            controller: 'ctrlTemplates',
            tab: "templates",
        })

所以我以后不必使用

在控制器中检查参数的值
if([('group', 'device'].includes($routeParams.resource))...

您知道是否有可能?或类似的方法?

最诚挚的问候,

2 个答案:

答案 0 :(得分:1)

你不能做你想做的。如果您想使用ui-router,可以将其关闭,但是AngularJS ngRoute不能使用正则表达式或将路由参数绑定到类型。如果您愿意切换到ui-router,我可以举一个示例,说明您如何做自己想做的事情。

答案 1 :(得分:0)

如果愿意帮助我实现我想做的事情,我愿意切换到ui-router。 另外,如果它支持类型,那很好,因为我有必须为整数的参数。我将看一些示例。

如果您有正则表达式的任何示例,那就太好了!