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)