我正在尝试创建一个超级简单的JavaScript模板解决方案。我想使用JavaScript replace
方法在模板中查找大括号的所有实例,并用适当的数据替换它们。
例如,如果我的模板是:<p>My name is {{name}}. I am {{age}}.</p>
我希望得到结果:<p>My name is Olly. I am 19.</p>
到目前为止,这是我的代码:http://jsfiddle.net/2RkAG/
我正在尝试让它自动替换每一段数据,因此我不必明确地告诉JavaScript要替换什么。但是,这是我遇到问题的地方。
答案 0 :(得分:4)
$1
仅在直接传递字符串时有效。它没有按照您的方式工作,因为在将字符串传递给person["$1"]
之前评估.replace
- 而person["$1"]
字面上是undefined
。
您可以改为传递函数:http://jsfiddle.net/2RkAG/1/。为每个替换调用该函数,并且传递的参数等同于例如, $1
。
$result.html(template.replace(/{{(.*?)}}/g, function(a, b) {
return person[b]; // a = complete match, b = first group
}));
您也不需要转义第一个{
。