2013-06-06 17 views
9

$sanitize hizmet tells me that

(bir beyaz listeden) Bütün güvenli belirteçleri sterilize.

Sadece HTML daha da küçük alt kümesini görüntülemek istediğiniz ( em, p, a ve strong yani). Çekirdek JavaScript değiştirmek zorunda kalmadan $service beyaz listesini değiştirmek için bir yolu var mı?

+0

Kopya ondan kendi direktifi kaynak ve yapmak;) – Guillaume86

+0

ben (ve ne yazık ki ben) açısal-kaynakla bunu yapmak zorunda olabilirdi ama uzaklaşan önlemek istiyorum Temel dosyaları mümkün olduğunca. –

+0

Bunun için bir çözüm buldunuz mu? ya da kendin mi yarattın? – user3319803

cevap

4

$ delegesini (belirtilen jdforsy) ve başka bir kütüphanede kullanabilirsiniz. Projemde kişisel olarak sanitizeHtml'u kullanıyorum çünkü izin verilecek etiketleri seçmeme izin veriyor. Kurulum:

4

Kaynak dosyaları değiştirmekten kaçınmak için $ sanitize hizmetini dekore edebilirsiniz. İşte, sadece $ sanitize içinde olanı kaydeden bir örnek. İstenmeyen öğeleri filtrelemek için ihtiyacınız olanı yapabilirsiniz.

var app = angular.module("app", ["ngSanitize"]); 

app.config(function($provide){ 
    $provide.decorator("$sanitize", function($delegate, $log){ 
     return function(text, target){ 

      var result = $delegate(text, target); 
      $log.info("$sanitize input: " + text); 
      $log.info("$sanitize output: " + result); 

      return result; 
     }; 
    }); 
}); 

Dekoratörün içinde $ delegesinin $ santize olduğunu belirtir. $ Delege (metin, hedef) çağırmadan önce girdiden ne istediğinizi filtreleyip sonucu döndürürsünüz.