1
我使用meteor-router程序包在我的應用程序中設置路線。但是,我需要能夠「動態」設置一些路線。這意味着我有一些「靜態」路由和一些「動態」,它們根據某些變量(特別是URL的一部分)而變化。
例如,如果用戶訪問www.example.com/foo,我的路線應在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'
});
它不會這樣的。在你的例子中,如果我嘗試在'Meteor.Router.add()'方法中直接連接,會出現一個錯誤:'SyntaxError:Unexpected token +'。如果我在Meteor.Router.add()之前嘗試使用這個變量,並將該變量賦值爲某個URL,則什麼也不會發生......事實上,我關於「動態」設置路由(在訂閱準備就緒後)的想法可能會不像我想象的那樣工作,但仍然無法在我的路線中使用前綴工作來獲得這個東西。 – errata 2013-03-05 13:01:15
我已經更新了一點,它應該使用'[]'方式來聲明密鑰 – Akshat 2013-03-05 13:32:48
Yap,現在可以工作了......我在定義密鑰時嘗試使用'[]',但是我試圖把他們在'Meteor.Router.add()'...你的解決方案發生在我身上,但我沒有真正嘗試過:)謝謝! – errata 2013-03-05 13:46:27