0

我使用模板和 javascript 为 json 数据生成 html,这是模板:

    <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}.

通过萤火虫我发现模板是这样的:

.........<span class="titleText">${name}</span> <a target="_blank" href="detail?fid=$%7bid%7d" class="titleLink">Detail</a>.......

所以id没有被替换,如何修复它?

4

1 回答 1

1

看起来您的浏览器正在对您的{}字符进行编码。你必须在你的正则表达式中考虑到这一点......

这是未经测试的,但... /\$(\{|%7b)(\w*)(\}|%7d)/

这应该这样做,或者非常相似的事情......这个想法是他们的。有时浏览器会用特殊字符做一些时髦的事情。

编辑:要匹配键(中间匹配组),请尝试使用传递给回调的第三个参数,就像在这个例子中一样:小提琴

于 2013-06-07T02:47:59.567 回答