我有輕微的兩難處境。 這不是一般於Backbone.js的,但它肯定是造成我的問題得到Backbone.Router.routes工作:在javascript/backbone中添加/附加散列鍵
問題: 我有一堆在我的JS硬編碼的路線遵循這些鍵值對哈希模式,如:
whatever.route : {"/url/goes/here":"functionNameHere"}
基本上這是做一個URL綁定到一個函數名稱來調用,當URL被改變。
我的問題是,我需要預先設置的URL與郎/區域設置字符串,以便該字符串看起來像「/ EN/URL /雲/這裏」
// this will always return "en" or "fr" or aany 2 letter language code
var lang = window.location.pathname.split("/")[1].length ==2?window.location.pathname.split("/")[1]:false;
workspace = new Workspace(//Workspace is basically just a Backbone.router.extend Object
{
// the routes obj is basically a sequence of routes
routes: {
"/": "home",
"/home": "home",
"/terms": "terms",
"/news": "blog",
"/news/:title": "blogpost",
"/about": "about",
"/about/partners": "partners",
"/about/people": "people",
"/values/ethics": "ethics",
"/values/innovation": "innovation",
"/work": "work",
"/work/process": "process",
"/work/awards": "awards",
"/work/:id": "workdetail",
"/contact": "contact",
"/contact/join": "joinus",
"/contact/enquiries": "enquiries"
},
lang : lang
}
);
我INTIAL想到的是沿着線:
....routes{ lang+"/url/goes/here": "functionNameHere",
...
沒有骰子錯誤 接下來我嘗試使用:
.... {航線的eval(郎+ 「/ URL /雲/這裏」): 「functionNameHere」,再次個...
沒有骰子..
肯定那裏有一種方式來動態前置上飛哈希鍵?
有人嗎?
非常感謝
解決方案由於T.J. (見下)
如果有人對Backbone.js具體的方式感興趣。 我所做的就是使用解決方案T.J.建議在我的初始化函數如下:
尼斯T.J.Crowder !!
不知道我是否應該修改了原稿
initialize: function(params){
var tmpr = {};
for(var i in params.routes)
{
tmpr[params.lang+i] = params.routes[i];
}
this.routes = tmpr;
......