Javascript 使用下划线.js插入html属性内部
我正在使用Backbone.js、下划线.js、HAML和Coffeescript构建一个应用程序 我遇到的问题是让变量插入html元素属性内部Javascript 使用下划线.js插入html属性内部,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,我正在使用Backbone.js、下划线.js、HAML和Coffeescript构建一个应用程序 我遇到的问题是让变量插入html元素属性内部 <% _.each(collection.models, function(document) { %> %tr %td %input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %&
<% _.each(collection.models, function(document) { %>
%tr
%td
%input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>"}
%td <%= document.attributes.id %>
%td <%= document.attributes.name %>
<% } %>
<% }); %>
%tr
%运输署
%输入{:type=>'复选框',:name=>“documents[]”,:value=>“”
%运输署
%运输署
对象的值在
中正确显示,但不在输入的值属性中
元素属性内的插值是否可行?我没能找到解决办法
谢谢您似乎没有正确关闭模板中的函数(请尝试在模板末尾添加
)
我不太熟悉HAML语法,但这里有一个简单的例子,介绍如何使用纯HTML和下划线模板。正如您所见,您完全可以在元素属性的中间使用插值。解决此问题的方法是使用HAML的
:escape\u attrs
选项
<% _.each(collection.models, function(document) { %>
%tr
%td
%input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>"}
%td <%= document.attributes.id %>
%td <%= document.attributes.name %>
<% } %>
<% }); %>
Haml::Engine.new(template, :escape_attrs => false).render
您可以尝试使用html_-safe,这是一种针对字符串对象的方法。这将转义variable语句中的html字符(<例如),并保留完整的下划线,以便在运行时进行计算:
%input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>".html_safe}
%input{:type=>'checkbox',:name=>“documents[]”,:value=>“”.html\u safe}
(在rails 3.0.13上测试)我在这方面没有经验,但请看看这是否是您需要的。它支持属性中的coffeescript。我不确定您的代码有什么问题,但我使用了下划线模板的插值。问题是html元素属性中的插值。抱歉,我没有包含完整的代码。我正在更新问题。谢谢你的链接。我看到它们成功地在元素的属性内插值。那么,可能问题在于HAML语法,因为如果您查看我链接到的JSFIDLE,您可以看到它正确地在复选框的value属性内插值;HAML似乎正在转义元素属性中的代码。根据HAML文档,有一个在非HAML上下文中运行代码的非HAML帮助程序。然后,也许对下划线使用不同的样式分隔符(例如,mustache样式)将有助于下面一个到下划线的文档,描述如何更改用于插值的分隔符。这在Rails 4.2.6上不起作用,但我不知道为什么。我可以将相同的代码放在属性值之外,我的
意思是说.html\u safe
相当于raw()
,但尽管它实际上在属性值之外是等效的,但当通过HAML模板引擎传递时,它不是在属性值之内。这是非常神秘的。