javascript - Interpolovať vo vnútri html atribútov pomocou Underscore.js
Vytváram aplikáciu pomocou Backbone.js, Underscore.js, HAML a Coffeescript.
Problém, ktorý mám, je dostať premenné, aby sa interpolovali vo vnútri atribútov HTML elementov.
<% _.each(collection.models, function(document) { %>
%tr
%td
%input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>"}
%td <%= document.attributes.id %>
%td <%= document.attributes.name %>
<% } %>
<% }); %>
Hodnoty objektu sa zobrazujú správne vnútri <td>, ale nie v atribúte value inputu.
Je interpolácia vo vnútri atribútov elementu možná? Nedokázal som nájsť riešenie.
Ďakujem
Odpoveď č. 1
Riešením tohto problému je použiť možnosť :escape_attrs v HAML.
Haml::Engine.new(template, :escape_attrs => false).render
Odpoveď č. 2
Môžete skúsiť použiť html_safe, čo je metóda na objektoch typu String. Toto zabezpečí únik HTML znakov v premennej statement (< napríklad) a nechá nedotknutú podčiarkovníkovú hodnotu, aby sa vyhodnotila počas behu programu:
%input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>".html_safe}
(Testované na Rails 3.0.13)
