我正在尝试创建一个超级简单的JavaScript模板解决方案.我想使用JavaScript替换方法在模板中查找大括号的所有实例,并用适当的数据替换它们.
例如,如果我的模板是:< p>我的名字是{{name}}.我是{{age}}.< / p>
我想要结果:< p>我的名字是Olly.我19岁.< / p>
这是我到目前为止的代码:http://jsfiddle.net/2RkAG/
我试图让它自动替换每一段数据,所以我不必明确告诉JavaScript要替换什么.但是,这是我遇到问题的地方.
最佳答案
仅当您直接传递字符串时,$1才有效.它不会像你拥有它那样工作,因为person [“$1”]在字符串传递给.replace之前被评估 – 而person [“$1”]字面上是未定义的.
原文链接:https://www.f2er.com/js/429513.html您可以改为传递一个函数:http://jsfiddle.net/2RkAG/1/.为每个替换调用该函数,并且传递的参数等同于例如,$1
$result.html(template.replace(/{{(.*?)}}/g,function(a,b) {
return person[b]; // a = complete match,b = first group
}));
你也不需要逃避第一个{.