我有这个div:
<div id="test">
{{? a && b || c < 0}}
<div>Pece &alt; Love!</div>
{{?}}
</div>
我确实得到了它的内容,就像上面报道的那样(花括号语法是模板引擎)。
不幸的是,.html()和.text()都不起作用:
// $('#test').text()
{{? a && b || c < 0}}
Pece &alt; Love!
{{?}}
.text()删除了标签
// $('#test').html()
{{? a && b || c < 0 }}
<div>Pece &alt; Love!</div>
{{?}}
.html()对&符号进行编码(和&lt;&gt;)。
有任何帮助吗?感谢
答案 0 :(得分:8)
将模板存储为HTML并不是一个好主意。使用自定义mimetype将它们存储在<script>
标记内:
<script type="text/your-template" id="template">
{{? a<b && b>c }}
<div>Peace & Love!</div>
{{?}}
</script>
将非HTML作为HTML的模板存储会产生不良结果,如您所知:
.innerHTML
属性时,您看到的是浏览器解释您的模板的内容,如果它是有效的HTML,可以更改它:http://jsfiddle.net/ZFd6a/3/ a<b && b>c
将变为ac
,因为中间部分将被解释为元素。你完全受浏览器HTML解析器的支配。当您将模板移动到<script>
标签时,其mimetype不是为JavaScript保留的,您的模板将被视为字符串,这正是您想要的。