最近知ったのですが、underscore.jsのtemplateメソッドは、htmlをエスケープするかどうか決めることができるようです。
<div id="hoge"></div>
<div id="bar"></div>
<script>
jQuery(function($){
var _t = _.template("hello: <%= name %>");
$('#hoge').append(_t({name:'<span>hello</span>'}));
var _t = _.template("hello: <%- name %>");
$('#bar').append(_t({name:'<span>hello</span>'}));
});
</script>これ実行した結果、hello: hello
hello: <span>hello</span>
となった。
つまり、
<%= %>で囲まれた部分はhtmlが実行された。
<%- %>で囲まれた部分はhtmlがエスケープされた。
0 コメント:
コメントを投稿