铁:路由器通配路径生成似乎被破坏了

时间:2015-11-13 16:53:29

标签: meteor iron-router

当你在铁路上创建一个通配符:路由器用于meteor路径模板助手,但路由器。路由器和路由器路由器路由器路由器路径似乎也被打破了。

这是我们的路线:

Router.route('/:urlQuery*', function(){
  this.render('ourTemplate');
}, {
  name : 'ourRoute',
});

要访问生成的网址,我们尝试了以下内容:

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:路由器指南中找不到任何引用所以我的问题是:如何在iron中生成一个URL:带有通配符作为参数的路由器?

1 个答案:

答案 0 :(得分:2)

看起来Iron Iron正在使用path-to-regexp,但在Iron Router中使用时格式有点不同,并不是很清楚。试试这个......

Router.route('/:urlQuery(.*)', function(){

(。)将告诉它采用参数名称,并重复0次或更多次。只是urlQuery 打破了我认为的名称,并使其成为正则表达式的一部分。现在,如果您想将多个对象数组传递给Router.go,您将遇到另一个问题......

Router.go("our.route", {urlquery: ['test', 'another']});

生成一个看起来像这样的网址......

http://localhost:3000/test%2Canother

但这是一个不同的问题,我还没有得到答案。也许在Router.go中发送多个,更好的方法是自己连接它们。看起来铁路由器和路径到正则表达式还没有完全集成?