![](/img/trans.png)
[英]How to modify a global variable inside a function in javascript, i.e. modify variable in-place
[英]How to find output of JS each function within a JS string variable (i.e., javascript interpolation)
对于上下文, gon.jbuilder
是一个嵌套的JSON,它表示lenders
与其inventories
之间的has_many
关系。
gon.jbuilder = [
{
"name": "John Doe",
"age": 29,
"inventories": [
{"id": 1, "name": "nail"},
{"id": 2, "name": "hammer"},
...
]
},
{
"name": "Jane Smith",
"age": 31,
"inventories": [
{"id": 3, "name": "picture"},
{"id": 4, "name": "frame"},
...
]
}
]
我正在使用Google Maps API为每个lender
标记,然后在信息窗口中为每个lender
显示他/她的所有inventories
。 这需要在信息窗口的内容内进行each
循环,而我不知道该怎么做。 我需要这样的东西:
$.each( gon.jbuilder, function (counter, lender) {
// draw the marker for each lender
// establish an info window for each lender
// below per Google API docs should be the content that goes into the info window, not sure how to interpolate the each correctly
var contentString = '<div id="content">'+
'<div id="siteNotice">'+
'</div>'+
'<h1 id="firstHeading" class="firstHeading">'+ lender.name + '</h1>'+
'<div id="bodyContent">'+
'<ul>' +
$.each( lender, function (counter, inventory) {
'<li>' + inventory.name + '</li'>
}; +
'</ul>' +
'</div>'+
'</div>';
谢谢!
$.each
返回您迭代的对象,而不是$.each
返回的对象。 另外,您的函数不返回任何内容-它执行串联,但不返回它。
您可以使用$.map
,它以数组的形式返回所有结果,然后使用.join
将它们连接成一个字符串。
var contentString = '<div id="content">'+
'<div id="siteNotice">'+
'</div>'+
'<h1 id="firstHeading" class="firstHeading">'+ lender.name + '</h1>'+
'<div id="bodyContent">'+
'<ul>' +
$.map( lender.inventories, function (inventory, counter) {
return '<li>' + inventory.name + '</li>';
}).join('') +
'</ul>' +
'</div>'+
'</div>';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.