我想在haml模板中输出一个下划线模板变量,但我没有运气。
HTML没有被转义,所以我似乎无法弄清楚为什么下划线变量没有渲染。
HAML - 完整模板
%script{:type => "text/template", :id => "user_list_template"}
%h4 Users
#test
%table.table.table-bordered
%thead
%tr
%th #
%th Name
%th Nickname
%th
%tbody
{{ _.each( users, function(user) { }}
%tr
%td {{= user.get('id') }}
%td {{= user.get('name') }}
%td {{= user.get('nickname') }}
%td
%a.btn{:href => "{{= user.get('nickname') }}"}
View User
{{ }); }}
来源
<tr>
<td>9</td>
<td>TacoHell</td>
<td>TacoHelll</td>
<td>
<a class="btn" href="<%= user.get('nickname') %>">
View User
</a>
</td>
</tr>
Console.log模板
<h4>Users</h4>
<div id='test'></div>
<table class='table table-bordered'>
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>Nickname</th>
<th></th>
</tr>
</thead>
<tbody>
{{ _.each( users, function(user) { }}
<tr>
<td>{{= user.get('id') }}</td>
<td>{{= user.get('name') }}</td>
<td>{{= user.get('nickname') }}</td>
<td>
<a class='btn' href="{{= user.get('nickname') }}">
View User
</a>
</td>
</tr>
{{ }); }}
</tbody>
</table>
我已阅读之前提出的问题,但无法让它发挥作用。有什么想法吗?
修改1 添加了完整模板
编辑2 console.log模板
答案 0 :(得分:0)
这不是一个解决方案,因为它是一种解决方法,但一种替代方法是为Underscore模板使用不同的语法(一种不涉及<
和>
) 。如果你看看:
http://documentcloud.github.com/underscore/#template
你会发现它们提供了备用Django / Moustache样式模板语法的示例:
如果ERB风格的分隔符不是你的一杯茶,你可以改变 下划线的模板设置使用不同的符号来设置 内插代码。定义插值正则表达式以匹配表达式 应该逐字插入,匹配的逃避正则表达式 在HTML转义后应该插入的表达式,以及 评估正则表达式以匹配应该在没有评估的表达式 插入到结果字符串中。您可以定义或省略任何 三者的结合。例如,执行Mustache.js样式 模板:
_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g
};
var template = _.template("Hello {{ name }}!");
template({name : "Mustache"});
=> "Hello Mustache!"
当然,如果您正在考虑寻找更强大的模板系统,那么放弃_.template
并使用Mustache,Handlebars或类似的模板系统肯定不会受到伤害。但如果您对Underscore感到满意,_.templateSettings.interpolate
将允许您在<
或>
之前使用它。