UPDATE玉v0.24.0修复了这个有!=
语法属性。 option(value!='<%= id %>')
我试图建立一个<option>
玉,其中期权的价值是UnderscoreJS模板标记: <%= id %>
但我不能得到它的工作,因为玉是我转换文本标记以<= id >
。
这里是我的玉标记:
script(id="my-template", type="text/template")
select(id="type")
<% _.each(deviceTypes, function(type){ %>
option(value='<%= type.id %>') <%= type.name %>
<% }) %>
我希望它产生这个网站:
<script id="my-template" type="text/template">
<select id='type'>
<% _.each(deviceTypes, function(type){ %>
<option value="<%= type.id %>"> <%= type.name %> </option>
<% }) %>
</select>
</script>
但是我所得到的,而不是,是这样的:
<script id="my-template" type="text/template">
<select id='type'>
<% _.each(deviceTypes, function(type){ %>
<option value="<%= type.id %>"> <%= type.name %> </option>
<% }) %>
</select>
</script>
请注意,在非常细微的差别<option>
输出线...的value
期权的属性已经HTML编码。
如何防止从玉HTML编码这个值? 我需要它来产生文本值,将其与选项的文本做了同样的方式。
在撰写本文时,我不相信有办法了。 看到这个问题: https://github.com/visionmedia/jade/issues/198
我最终落入原始的HTML来解决它,使用| 字首。
德里克已经提到,在翡翠加更新新功能的HTML UNESCAPE编码,但我想添加一些增编的人谁可能无法识别。
- var html = "<script></script>"
| !{html} <-- Escaped
| #{html} <-- Encoded
从https://github.com/visionmedia/jade
此功能已被添加到玉 。 您只需使用!=
运算符,如果你想取消转义属性值:
script#my-template(type='text/template')
a(href!='<%= url =>') Clicky clicky...
所以我有类似这样的问题,在这里我想创造里面的我玉意见一个一个下划线模板。 一块设置所需的下划线模板的selected
属性在一个<option>
标记。
起初,我试过有“选择”或“”下划线回报。 不幸的是, 翡翠没有一个方式来显示没有值的属性 ,并没有非转义属性名称(下划线位被回来不带引号)的方式。
幸运的是,你可以取消转义属性的值 ,保留引号。
在这个例子中,我选择基于所述所有者类型相匹配的字符串值下拉的值。 我设置一个辅助功能,这样我就不必手动逃脱引号。
- var checkType = function(type) { return "<%= contact.type == '" + type + "' %>" };
.clearfix
label Title:
.input
select(type="text", name="contact[title]", class="new-title")
option(value="") Choose Title
option(value="manager", selected="#{ checkType('manager') }") Manager
option(value="member", selected="#{ checkType('member') }") Member
option(value="owner", selected="#{ checkType('owner') }") Owner
option(value="president", selected="#{ checkType('president') }") President
option(value="individual", selected="#{ checkType('individual') }") Individual
option(value="main_contact", selected="#{ checkType('main_contact') }") Main Contact
据一些,你应该能够使用!{}
这里完全避免所有的编码( <, >, etc.
),然而这并没有对我的版本玉工作。 我用"^0.30"
和目前的版本是1.x
。
如果有人可以验证!{}
不会在这种情况下使用最新版本的翡翠工作,我会更新我的答案。
文章来源: How to make Jade stop HTML encoding element attributes, and produce a literal string value?