Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用下划线.js插入html属性内部_Javascript_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 使用下划线.js插入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 %&

我正在使用Backbone.js、下划线.js、HAML和Coffeescript构建一个应用程序

我遇到的问题是让变量插入html元素属性内部

<% _.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模板引擎传递时,它不是在属性值之内。这是非常神秘的。