2012-05-18 26 views
19

Tôi đang sử dụng tay lái templating động cơ trên ứng dụng Tôi đang xây dựng để làm cho dữ liệu tôi nhận được từ máy chủ.Làm thế nào để giải mã đối tượng HTML với tay lái

Tôi biết rằng nó thoát khỏi giá trị HTML theo mặc định và bạn phải sử dụng dấu ngoặc ba {{{text}}} để hiển thị text: <p>Example</p> để được hiển thị dưới dạng phần tử HTML.

Vấn đề là, tôi phải làm gì nếu dữ liệu tôi nhận được, bao gồm các thẻ HTML, đã trốn thoát?

Vì vậy, nếu tôi nhận được dữ liệu như:

text: &lt;p&gt;Example&lt;/p&gt; 

Làm thế nào để buộc tay lái để dịch nó và làm cho nó dưới dạng HTML bình thường không?

+2

Hầu hết các ngôn ngữ mẫu giả định dữ liệu là một trong hai mã hóa cho sản lượng mục tiêu hoặc là văn bản đơn giản mà cần mã hóa. Họ không đi kèm với các tính năng "giải mã từ mã hóa arbitary". – Quentin

Trả lời

36

Bạn phải giải mã nó trước, sau đó vượt qua nó để tay lái với dấu ngoặc ba. Tôi biết một mẹo nhỏ để giải mã các đối tượng html với jQuery:

// encoded is "&lt;p&gt;Example&lt;/p&gt" in your example 
var decoded = $('<textarea />').html(encoded).val(); 
// decoded should now return <p>Example</p> 
+2

+1 cho việc sử dụng hack này tốt đẹp để giải mã mà không cần '.replace (/>/g, '>') .replace (/ &/g, '&') .replace (/"/g, '"') .replace (/ '/ g,' ' ') .replace (/ GodLesZ

+0

Cảm ơn, đẹp lừa :) – Maverick

+0

tôi không quan tâm bỏ phiếu lên gấp đôi cho câu trả lời này nếu tôi có thể. –

4

tay lái cung cấp người giúp đỡ và viết một helper tùy chỉnh như sau dưới Hanlebars_helpers.js

Handlebars.registerHelper('encodeMyString',function(inputData){ 
    return new Handlebars.SafeString(inputData); 
}); 

và sử dụng helper này trong .handlebar tập tin của bạn hoặc .hbs tệp như sau

{{encodeMyString myHTMLData}} 

Nếu không có sự trợ giúp của Jquery bạn có thể sử dụng nó bất kỳ nơi bên trong tay lái của bạn. Thậm chí bạn có thể sử dụng trình trợ giúp để truyền dữ liệu một mình và dữ liệu đó sẽ trả về dữ liệu với các thẻ được thêm vào và nối tiếp.

Các vấn đề liên quan