Tìm kiếm trang web

javascript - Nội suy bên trong các thuộc tính html với Underscore.js


Tôi đang xây dựng một ứng dụng sử dụng Backbone.js, Underscore.js, HAML và Coffeescript.

Vấn đề mà tôi gặp phải là làm thế nào để biến được nội suy bên trong các thuộc tính của phần tử 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 %>

  <% } %>
<% }); %>

Các giá trị của đối tượng đang hiển thị đúng bên trong <td>, nhưng không hiển thị trong thuộc tính value của input.

Có thể nội suy bên trong các thuộc tính của một phần tử không? Tôi không thể tìm thấy giải pháp.

Cảm ơn

Câu trả lời #1

Giải pháp cho vấn đề này là sử dụng tùy chọn :escape_attrs của HAML.

Haml::Engine.new(template, :escape_attrs => false).render

Câu trả lời #2

Bạn có thể thử sử dụng html_safe, đây là một phương thức trên các đối tượng String. Điều này sẽ thoát các ký tự html trong biến statement (< chẳng hạn) và sẽ để nguyên cho underscore đánh giá khi chạy:

%input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>".html_safe}

(Đã thử nghiệm trên Rails 3.0.13)