【发布时间】:2016-02-15 08:05:40
【问题描述】:
当您在 iron:router 中为流星创建通配符 URL 时,pathFor 模板帮助器以及 Router.go 和 Router.routes[routeName].path() 似乎都被破坏了。
这是我们的路线:
Router.route('/:urlQuery*', function(){
this.render('ourTemplate');
}, {
name : 'ourRoute',
});
要访问生成的 url,我们尝试了以下方法:
Router.go('ourRoute', {urlQuery : 'test'});
Router.go('ourRoute', {urlQuery : ['test']});
Router.go('ourRoute', {urlQuery : null});
Router.go('ourRoute', {urlQuery : false});
Router.routes.ourRoute.path({urlQuery : 'test'});
Router.routes.ourRoute.path({urlQuery : ['test']});
Router.routes.ourRoute.path({urlQuery : null});
Router.routes.ourRoute.path({urlQuery : false});
而且 - 当然 - 我们也尝试了 {{pathFor}} 模板助手。
这些代码行中的每一行都会抛出相同的错误:
Uncaught Error: You are trying to access a wild card parameter at index 0 but the value of params at that index is undefined
我在 iron:router 指南中没有找到任何参考资料,所以我的问题是:如何在 Iron:router 中生成一个带有通配符作为参数的 URL?
【问题讨论】:
-
/:urlQuery* 上的 * 是什么意思?我还没有看到,看起来像你的混合参数和正则表达式路径?
-
这是通配符的符号。因此,例如路由 /test1/test2 将在 urlQuery 参数中保存“test1/test2”。
-
我以前从未见过。您是否正在考虑正则表达式? stackoverflow.com/questions/27455206/…
-
@ChristianFritz 您可以自己尝试使用 *。在我的示例中使用路由时,您将在 this.params.urlQuery 中获取在此位置传入 url 的所有参数。
-
我明白了。有趣的。这在某处有记录吗?
标签: meteor iron-router