2013-06-06 14 views
9

Der $sanitize Service tells me that

Alle sichere Token (aus einer weißen Liste) werden dann zurück zu serialisiert richtig HTML-String entkommen.

Ich möchte eine noch kleinere Teilmenge von HTML nur angezeigt werden (nämlich em, p, a und strong). Gibt es eine Möglichkeit, die Whitelist einfach zu ändern, ohne das Kern-JavaScript ändern zu müssen?

+0

Kopieren Sie die Quelle der Richtlinie und machen Sie Ihre eigenen von ihm;) – Guillaume86

+0

Ich konnte (und leider habe ich musste es mit Winkel Ressource) tun, aber ich möchte von den divergierenden vermeiden Basisdateien so viel wie möglich. –

+0

Hatten Sie eine Lösung? oder hast du deine eigene erstellt? – user3319803

Antwort

4

Sie können $ delegate (als jdforsythe genannt) und eine andere Bibliothek verwenden. Ich persönlich benutze sanitizeHtml in meinem Projekt, weil es mir erlaubt zu wählen, welche Tags zu erlauben. Das Setup:

4

Sie können den $ sanitize-Dienst dekorieren, um zu vermeiden, dass die Quelldateien geändert werden. Hier ist ein Beispiel, das nur protokolliert, was in $ sanitize passiert. Sie können tun, was Sie brauchen, um unerwünschte Elemente zu filtern.

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; 
     }; 
    }); 
}); 

Beachten Sie, dass $ delegate innerhalb des Dekorators auf die $ santize verweist. Sie filtern, was Sie wollen, bevor Sie $ delegate (text, target) aufrufen, und geben dann das Ergebnis zurück.