在javascript / backbone中添加哈希键
Prepending/appending hash keys in javascript / backbone
我有点进退两难。这并不适用于backbone.js,但它确实给我带来了问题,使Backbone.Router.routes工作:
问题:我有一堆硬编码的路由在我的js这些遵循一个键值对哈希模式,如:
whatever.route : {"/url/goes/here":"functionNameHere"}
这基本上是将url绑定到一个函数名,以便在url更改时调用。
问题是我需要在url前加上一个lang/locale字符串,这样字符串看起来就像"/en/url/goes/here"
// 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
}
);
我最初的想法是:
....routes{ lang+"/url/goes/here": "functionNameHere",
...
没有骰子错误接下来我尝试使用:
…routes{eval(lang+"/url/goes/here"): "functionNameHere",…
no dice again.
肯定有一种方法可以动态地添加哈希键?
有人知道吗?
Thanks very much
解决方案感谢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;
......
对象字面值中:
左侧的部分必须是一个字面值(标记[例如,不带引号]或字符串字面值[例如,带引号])。它不能是表达式。所以你不能在对象字面量中这样做。相反,您必须这样做:
var routes = {};
routes[lang + "/url/goes/here"] = "functionNameHere";
// ...
workspace = new Workspace(
{
routes: routes,
lang : lang
}
);
在这里,我们使用括号中的符号将属性分配给routes
对象。当使用括号表示法时,可以使用表达式来确定属性名。这是JavaScript的一个更酷但不太为人所知的特性,即可以使用点符号和文字属性名(obj.foo
)或括号符号和字符串属性名(obj["foo"]
)访问属性。(事实上,当你索引到arrays —a[0] = 5;
,本;因为数组根本就不是数组)
- 动态添加哈希标记;t工作
- Angular ui路由器向url添加哈希
- Jquery在尝试添加url参数时添加哈希符号
- 如何阻止任何滑块向 URL 添加哈希标签
- 我可以比较两个Perl哈希(键和值)提取差异并应用于JavaScript中的哈希吗?
- 哈希键/值作为数组
- AngularJS-自动向URL添加哈希标签-覆盖搜索参数
- 如何实现哈希键导航
- AngularJS 1.1.5-自动向URL添加哈希标签
- 每个图像的唯一URL(最好只添加哈希),直接显示弹出图像
- 在location.pathname前添加哈希值
- 从URL中删除哈希,以无哈希URL加载页面,然后在不重新加载页面的情况下向URL添加哈希
- 如何跟踪一个javascript行为的起源,特别是-添加哈希到我的url
- 在javascript / backbone中添加哈希键
- Coffeescript动态哈希键
- Javascript -在锚链接上的焦点/跳转在所有浏览器中表现相同(加上可能添加哈希#链接)
- 使用resume .js添加哈希
- 对于不支持的浏览器,Angular不会向ng-href中添加哈希值
- 如何在URL参数中提交哈希键?
- 如果希望使用javascript数组作为哈希键,请使用任意数组元素进行检索