2013-04-11 32 views
23

Cách tốt nhất để giải mã HTML được chứa trong các chuỗi được chuyển đến biểu thức Góc là gì?Giải mã HTML trong biểu thức Góc

Ví dụ:

Nếu tôi có một chuỗi trở về từ máy chủ như thế này:

var some_val = "Hello <strong>World</strong>!" 

Làm thế nào tôi có thể có nó render HTML chứ không phải hiển thị nó dưới dạng văn bản?

<!-- Renders to Hello <strong>World</strong>! --> 
<span>{{ some_val }}</span> 

Cập nhật: Đây là trường hợp thực tế sử dụng trong một repeater:

trình (unsanitized)

<div ng-repeat="category in some_list"> 
    <p>{{ category.name }}</p> 
    <p ng-repeat="bullet in category.bullets">{{ bullet.desc }}</p> 
</div> 

Không làm việc ở tất cả

<div ng-repeat="category in some_list"> 
    <p ng-bind-html="category.name"></p> 
    <p ng-repeat="bullet in category.bullets" ng-bind-html="bullet.desc"></p> 
</div> 
+5

Bạn đã bao gồm các tập tin góc-sanitize.js chứa các chỉ thị ng-bind-html? – jpmorin

+0

Đó chắc chắn là một phần của vấn đề, nhưng tôi cũng phải sử dụng 'ng-bind-html-unsafe'. – Terry

Trả lời

25

Như đã trình bày here, in the docs:

<span ng-bind-html="some_val"></span> 

Ghi some_val đó phải là một mô hình góc (về cơ bản, một $scope.some_val phải tồn tại ở đâu đó trong ứng dụng của bạn)

EDIT:

Tôi nên làm rõ: ng -bind-html là một dịch vụ trong mô-đun ngSanitize, không được bao gồm trong lõi angularJS. ng-bind-html-unsafe là một phần của mô-đun ng lõi, nhưng nó bao gồm chuỗi bạn cung cấp mà không cần vệ sinh nó (xem ví dụ trong the ngBindHtmlUnsafe docs).

Nếu bạn muốn/nhu cầu sử dụng ngBindHtml, bạn cần bao gồm ngSanitize - available here

+0

Bạn có thể thoát khỏi việc sử dụng biến bằng cách sử dụng dấu ngoặc kép: ' ' – Langdon

+0

Hmm Tôi đang sử dụng nó trong bộ lặp và nó không phải là' t làm việc. Có lẽ đó là một lỗi. Tôi sẽ cập nhật các câu hỏi ban đầu với mã lặp lại trong trường hợp tôi bị mất một cái gì đó rõ ràng. – Terry

+0

Theo nhận xét trên trang của tài liệu: Câu hỏi: "Có vẻ như kết quả không phải là innerHTMLed nhưng chỉ được hiển thị dưới dạng giá trị của thuộc tính ng-bind-html." Trả lời: "Có một chỉ thị ng-ràng buộc-html-không an toàn đặt chính xác nội dung như innerHTML. Đây không phải là tài liệu được inm." Tôi hy vọng nó sẽ giúp. – jpmorin

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