最近知ったのですが、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 コメント:
コメントを投稿