Routing 在Meteor中动态创建路由

Routing 在Meteor中动态创建路由,routing,meteor,meteorite,Routing,Meteor,Meteorite,我正在使用软件包在我的应用程序中设置路由。但是,我需要能够“动态”设置一些路由。这意味着我有一些“静态”路由和一些“动态”路由,它们根据一些变量(特别是URL的一部分)而变化。 例如,如果用户访问www.example.com/foo,我的路由应该在所有URL前面加上foo,如果用户访问www.example.com/bar,所有路由都应该加上bar前缀 伪代码: Meteor.subscribe('bar', function(){ var prefix = window.location

我正在使用软件包在我的应用程序中设置路由。但是,我需要能够“动态”设置一些路由。这意味着我有一些“静态”路由和一些“动态”路由,它们根据一些变量(特别是URL的一部分)而变化。
例如,如果用户访问www.example.com/foo,我的路由应该在所有URL前面加上
foo
,如果用户访问www.example.com/bar,所有路由都应该加上
bar
前缀

伪代码:

Meteor.subscribe('bar', function(){
  var prefix = window.location.pathname.replace(/^\/([^\/]*).*$/, '$1');

  // "dynamic" routes, generated after 'subscribe' is ready
  Meteor.Router.add({
    prefix+'/': function() {
      // some code
      return 'mainTemplate';
    },
    prefix+'/welcome': 'welcome',
    prefix+'/foo': 'foo',
    prefix+'/bar': 'bar'
  });
)};

// "static" routes, independent of current URL
Meteor.Router.add({
  '/': 'home',
  '/admin': 'admin'
});

以上设置应该有效,只需将每条路线更改为具有
/
前缀

Routes = {}

Routes['/' + prefix + '/welcome'] = function() { return 'welcome' };
Routes['/' + prefix +' /foo'] = 'foo';
...

Meteor.Router.add(Routes);

以上设置应该有效,只需将每条路线更改为具有
/
前缀

Routes = {}

Routes['/' + prefix + '/welcome'] = function() { return 'welcome' };
Routes['/' + prefix +' /foo'] = 'foo';
...

Meteor.Router.add(Routes);

那样不行。在您的示例中,如果我尝试在
Meteor.Router.add()
方法中直接连接,我会得到一个错误:
SyntaxError:Unexpected token+
。如果我尝试在Meteor.Router.add()之前创建这个变量,并将该变量指定为某个URL,则不会发生任何事情。。。事实上,我关于“动态”设置路由的想法(在订阅就绪后)可能不会像我想象的那样起作用,但我仍然无法在我的两条路由中都使用前缀工作。我已经更新了一点,它应该可以使用
[]
方法来声明密钥,而不是使用EAP,现在可以了。。。我试图在定义密钥时使用
[]
,但我试图将它们放在
Meteor.Router.add()中。。。我想到了你的解决办法,但实际上我没有尝试:)非常感谢!那样不行。在您的示例中,如果我尝试在
Meteor.Router.add()
方法中直接连接,我会得到一个错误:
SyntaxError:Unexpected token+
。如果我尝试在Meteor.Router.add()之前创建这个变量,并将该变量指定为某个URL,则不会发生任何事情。。。事实上,我关于“动态”设置路由的想法(在订阅就绪后)可能不会像我想象的那样起作用,但我仍然无法在我的两条路由中都使用前缀工作。我已经更新了一点,它应该可以使用
[]
方法来声明密钥,而不是使用EAP,现在可以了。。。我试图在定义密钥时使用
[]
,但我试图将它们放在
Meteor.Router.add()中。。。我想到了你的解决办法,但实际上我没有尝试:)非常感谢!