2013-02-20 31 views
9

Tôi đã tạo 2 bộ lọc trong AngularJS autolinknl2br.Áp dụng các bộ lọc trên HTML được xuất cho AngularJS

autolink: chuyển đổi một chuỗi URL để thẻ <a> với các thuộc tính rel="nofollow" target="_blank". Tôi đã thử sử dụng ngSanitize với bộ lọc liên kết, nhưng nó không thêm 2 thuộc tính ở trên vào nó, cũng không cung cấp cách để làm điều đó với API cũ.

nl2br: chuyển đổi dòng mới thành <br> thẻ.

Tôi muốn áp dụng những 2 bộ lọc để {{ comment }} sử dụng {{ comment | autolink | nl2br }} trong HTML của tôi, nhưng các bộ lọc được áp dụng trước khi AngularJS hiện thoát HTML mà kết quả trong <a><br> để được thoát là tốt. Về cơ bản, tôi muốn áp dụng các bộ lọc sau việc thoát đã diễn ra.

Có cách nào để làm điều này với AngularJS không?

Trả lời

13

Nếu bạn có một suy tiêu chuẩn trong HTML của bạn, góc sẽ thoát khỏi nó:

<div> {{ var | filter1 | filter2 }} </div> 

Kết quả của toàn bộ biểu thức sẽ được thoát.

Điều bạn muốn là ng-bind-html-unsafe(docs here). Bạn có thể diễn đạt về cơ bản giống như trên như sau:

<div ng-bind-html-unsafe='var | filter1 | filter2'></div> 

Bây giờ, kết quả của biểu thức sẽ không được khử trùng và sẽ được chèn vào như nội dung của div.

EDIT: Lưu ý rằng có cũng ng-bind-html, mà vẫn sẽ sản xuất HTML, nhưng sẽ khử trùng nó đầu tiên ($sanitize docs).

ng-bind-html sống trong mô-đun ngSanitize, vì vậy bạn sẽ phải đảm bảo rằng bạn đã tuyên bố rằng bạn đã tuyên bố là phụ thuộc trong cuộc gọi angular.module của mình.

+1

Nhưng tôi muốn nhận xét, trong trường hợp của tôi, được thoát; với 2 bộ lọc được áp dụng sau khi thoát. – ademers

+0

Ah, sau đó sử dụng 'ng-bind-html' thay vì' ng-bing-html-unsafe'. Tôi đã thêm nó vào câu trả lời. – satchmorun

+1

Tôi đã làm điều đó như đã nêu trong bài đăng gốc của mình. Nhưng tôi muốn mọi thứ thoát THEN áp dụng bộ lọc của tôi. 'ng-bind-html' sẽ an toàn thoát khỏi một số HTML và sẽ để lại một số thẻ html cơ bản một mình. Cũng với 'ng-bind-html', nó sẽ loại bỏ thuộc tính' href' mà tôi đang định nghĩa với bộ lọc 'autolink' của tôi. – ademers

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