我使用模板和javascript为json数据生成htmls,这是tempalte:
<div id="template">
<div class="iwContainer">
<div class="iwHeaderContainer">
<div class="iw-title-container">
<span class="titleText">${name}</span> <a target="_blank" href="detail?fid=${id}" class="titleLink">Detail</a>
</div>
</div>
<div class="iwRichContainer">
<div class="iw-g-font">Address:${address}</div>
</div>
@{setsearchTemplate}
</div>
</div>
JS:
buildInfoContent : function(item) {
var tmp = $("#template").html();
if (tmp) {
tmp = tmp.replace(/\$\{(\w*)\}/g, function(m, key) {
return item.hasOwnProperty(key) ? item[key] : "";
});
return tmp;
}
}
我称之为:
buildInfoContent({name:'name',id:2,address:'address'});
所有的palcehodler都被替换了${id}
。
通过萤火虫我发现temlate是这样的:
.........<span class="titleText">${name}</span> <a target="_blank" href="detail?fid=$%7bid%7d" class="titleLink">Detail</a>.......
所以id
没有被替换,如何解决?
答案 0 :(得分:1)
您的浏览器似乎正在编码{}
个字符。你必须在正则表达式中考虑到这一点......
这是未经测试但......
/\$(\{|%7b)(\w*)(\}|%7d)/
这应该做到,或者类似的东西......这个想法是他们的。有时候浏览器会使用特殊字符做一些时髦的事情。
编辑:要匹配密钥(中间匹配的组),请尝试使用传递给回调的第3个参数,例如:Fiddle