2015-06-02 6 views
6

Ich habe eine variable

x = "http://example.com?a= {{a}} & b = {b}} {

Diese Variable dann in einem

verwendet wird ng- src = {{x}}

Daher ist es wichtig, dass ich die Variablen a und b url codiere

i derzeit Was tun ist:

var func = $interpolate($scope.x); 
      var url = func($scope); 
      return $sce.trustAsResourceUrl(url); 

Mein Problem ist, dass, wenn a oder b Leerzeichen enthält sie nicht verschlüsselt URL.

Wie kann ich die $ interpolate Funktion zu URL-Codierung der Variablen a und b sagen?

Antwort

3

$interpolate Dienst tut wertet den {{}} Inhalt und nehmen diejenigen Wert von Rahmen, während Umfang zu bewerten.

Da Sie die url econded sehen möchten, tun Sie nicht Codierung von Parametern überall. Sie müssen Ihre a sowie b in {{}} Interpolation mit encodeURIComponent von Javascript codieren. Dafür müssen Sie eine Wrapper-Methode im Bereich erstellen, die Methode aufrufen und die Codierung URL zurückgeben, Methode wäre wie folgt.

$scope.encodeContent = function(data){ 
    return encodeURIComponent(data); 
} 

Danach Ihr URL würde aussehen wie http://www.example.com/images.jpg?a={{encodeContent(a)}}&b={{encodeContent(b)}}

Und während es src von img Etikettenanbringvorrichtung müssen Sie Interpolation bewerten ersten & dann können Sie diese URL machen als vertrauenswürdig, wie Sie jetzt tun.

Markup

<img src="{{trustedUrl(x)}}" width="50" height="50"/> 

-Code

$scope.trustedUrl = function(url){ 
    var interpolatedUrl = $interpolate(url)($scope) 
    return $sce.trustAsResourceUrl(interpolatedUrl) 
}; 

Working Plunkr

+0

@ David Michael Gang Sie damit jedes Problem nicht finden? –

+0

Die Lösung ist großartig und akzeptiert :-). Ich fand ein kleines Problem mit diesem. Dies ist eine Vorlage, die von unseren Benutzern in einem Backoffice ausgefüllt wird, und anstelle von a = {{a}} & b = {{b}} müssen sie a = {{encodeContent (a)}} & b = schreiben {{encodeContent (b)}}. Eine Lösung wäre, dass ich im Backoffice einen regulären Ausdruck mache, um a = {{a}} & b = {{b}} zu a = {{encodeContent (a)}} & b = {{encodeContent (b)}} zu transformieren. . Was denken Sie ? –

+0

@DavidMichaelGang mit regX wäre eine gute Annäherung .. –

Verwandte Themen