私は数日前に単純なテンプレート関数を書きましたが、今の問題は、空白がタグを殺すことです。したがって、次のように入力する<div id="str">#{my} #{name} #{is} #{#{a}}</div>
と、うまく機能しますが、次のようには機能しません<div id="str">#{my} #{name} #{is} #{ #{a} }</div>
。
これまでに行ったことは次のとおりです。
$.tmpl = function(str, obj) {
do {
var beforeReplace = str;
for(var key in obj) {
str = str.replace("#{" + key + "}", obj[key]);
}
var afterReplace = str !== beforeReplace;
} while (afterReplace);
return str;
};
var map = {
my: "Am",
name: "I",
is: "<a href='#'>awesome</a>",
a: "#{b}",
b: "c",
c: "?"
};
$("#str").html(function(index, oldhtml) {
$(this).html( $.tmpl(oldhtml, map) );
});
#{a}
とを使用する場合、どのように機能させることができますか#{ #{a} }
。私はそれが可能であり、単純でさえあることを知っていますが、私は正規表現のプロではありません。
これは機能します。
これは失敗します。