在AngularJS路由中传递多个参数

5

我正在尝试实现一个带有多个参数的Angular路由。以下是我尝试的示例:

.when('/myRoute/paramA/:paramA/paramB/:paramB/paramC/:paramC', {
    templateUrl: 'abc.html',
    controller: 'pwrController as pwrCtrl'
});

现在问题在于,我需要一直传递paramA才能传递paramB;而且需要同时传递paramA和paramB才能传递paramC。
在Angular中是否有一种方法可以独立地传递paramA、paramB或paramC?
谢谢!

这就是路由的工作原理:访问更深层嵌套的参数的唯一方法是拥有先前的参数。 - Stuart Nelson
7
“independently” 在这里指的是“独立地”。根据你的设计,你的 URL 将在 URL 中包含所有参数。为什么不能像这样做:'?paramA='paramA'&paramB='paramB'&paramC='paramC' - AnkitG
1
我同意AnkitG的观点,使用$location.search('paramA', paramA)服务在加载新路由之前设置参数,然后您可以使用$location.search().paramA读取它。 - SoluableNonagon
另外,如果您没有paramA,请使用一些定义为空的内容(如null、undefined、0或自定义)将其传递。这样,您总是会传递它,但在读取它时,您将寻找特定值,该值表示未定义。 - SoluableNonagon
1个回答

14

$location 注入到你的控制器中,使用它来代替 routeParams

var paramA = 'something';
$location.search('paramA', paramA); // write
// result http://localhost:3000/#/route/routeParam?paramA=something

$location.search() // read whole object
$location.search().paramA // read one parameter
// result 'something';

4
感谢@AnkitG提出的建议,这个功劳真的归于他。 - SoluableNonagon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接