2013-05-28 28 views
34

Tôi đang sử dụng Mustache để hiển thị mẫu.Chuỗi mẫu Mustache bên trong hiển thị dưới dạng HTML

Tôi có đối tượng json này:

{ 
    title: "Foo bar", 
    content: "<p> Html here </p>", 
    footer: "footer content here" 
    } 

Tôi có một mẫu Moustache như:

<div id="box"> 
    <div id="title"> {{title}} </div> 
    <div id="content"> {{content}} </div> 
    <div id="footer"> {{footer}} </div> 
    </div> 

Vấn đề của tôi là html trong nội dung biến là không nhận được trả lại mà thay vào đó chỉ là nhận được in ra màn hình.

Tôi thấy (trong cửa sổ nguồn không xem): <p> Html here </p>, nơi tôi chỉ muốn thấy rằng nếu tôi đã xem nguồn trang.

Làm cách nào để khắc phục điều đó khi tôi chuyển một chuỗi vào mẫu ria mép HTML bên trong được hiển thị? Tôi đang gọi mustache.render (templates.all, data); như cuộc gọi của tôi để ria mép.

Trả lời

99

Từ Mustache documentation:

Tất cả các biến là HTML thoát theo mặc định. Nếu bạn muốn trả về HTML không thoát, hãy sử dụng bộ ria mép ba: {{{name}}}.

Vì vậy, bạn chỉ cần sử dụng ví dụ: {{{content}}} trong mẫu của bạn:

<div id="box"> 
    <div id="title"> {{title}} </div> 
    <div id="content"> {{{content}}} </div> 
    <div id="footer"> {{footer}} </div> 
    </div> 
+0

Tôi biết đây là một bài đăng cũ, nhưng tôi cần giải quyết vấn đề trong các tệp javascript oder bên trong trang web của tôi. – cmarrero01

+0

Nếu bạn muốn lấy 'nội dung' dưới dạng biến, bạn sẽ làm điều đó trong mã đang gọi mẫu render. Bạn không thể trích xuất dữ liệu ra khỏi mẫu được hiển thị. (Một cách hack-ish, sẽ là để đưa ra các mẫu, sau đó giải nén nó ra khỏi DOM bằng cách sử dụng 'documents.querySelector (...). TextContent') – sweetamylase

+0

@ cmarrero01 sau đó bạn có thể đặt một phần {{> cnt}} để tạo mẫu và chuyển đối tượng biến '{" cnt ": content}' thành tham số thứ ba cho hàm 'render'. Như ở đây http://jsfiddle.net/EYDfP/169/ –