javascript - Interpoler dans les attributs HTML avec Underscore.js
Je suis en train de créer une application en utilisant Backbone.js, Underscore.js, HAML et Coffeescript.
Le problème que j'ai est de faire interpoler des variables à l'intérieur des attributs des éléments 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 %>
<% } %>
<% }); %>
Les valeurs de l'objet s'affichent correctement à l'intérieur du <td>, mais pas dans l'attribut value de l'input.
L'interpolation à l'intérieur des attributs d'un élément est-elle possible ? Je n'ai pas pu trouver de solution.
Merci
Réponse n°1
La solution à ce problème consiste à utiliser l'option :escape_attrs de HAML.
Haml::Engine.new(template, :escape_attrs => false).render
Réponse n°2
Vous pouvez essayer d'utiliser html_safe, qui est une méthode sur les objets String. Cela va échapper les caractères HTML dans la variable statement (< par exemple) et laissera intact pour que underscore évalue à l'exécution :
%input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>".html_safe}
(Testé sur Rails 3.0.13)
