2013-03-05 3 views
1

Я использую пакет meteor-router для настройки маршрутов в моем приложении. Тем не менее, мне нужно иметь возможность настраивать некоторые маршруты «динамически». Это означает, что у меня есть некоторые «статические» маршруты и некоторые «динамические», которые меняются в зависимости от некоторой переменной (в частности, части URL).
Например, если пользователь посещает www.example.com/foo, мои маршруты должны префикс всех URL-адресов foo, если пользователь посещает www.example.com/bar, все маршруты должны иметь префикс bar.Создание маршрутов динамически в Meteor

Псевдо код:

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' 
}); 

ответ

1

Вы выше настройки должны работать, только изменить каждый маршрут, чтобы иметь / PREfix

Routes = {} 

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

Meteor.Router.add(Routes); 
+0

Он не будет работать таким образом. В вашем примере, если я попытаюсь конкатенацию непосредственно в методе Meteor.Router.add() ', я получаю сообщение об ошибке:' SyntaxError: Неожиданный токен + '. Если я попытаюсь сделать эту переменную до «Meteor.Router.add()» и присвоить этот var как некоторый URL-адрес, ничего не произойдет ... На самом деле, моя идея о «динамической» настройке маршрутов (после подписания готова) будет, вероятно, не работает, как я представлял, но все же я не могу получить эту вещь с префиксной работой ни на одном из моих маршрутов. – errata

+0

Я немного обновил, он должен работать с помощью '[]' способа объявить ключи вместо – Akshat

+0

Yap, который работает сейчас ... Я пытался использовать '[]' при определении моих ключей, но я попытался установить их в 'Meteor.Router.add()' ... Ваше решение возникло для меня, но я на самом деле не пробовал его :) Большое спасибо! – errata

Смежные вопросы