2014-08-28 13 views
7

Ho cercato di impostare un modulo di ricerca in cui è possibile inserire l'attributo action form.Azione modulo definita angolare in base alla variabile nell'ambito

Nella mia forma ho

<form action="{{action}}"> 

Poi nel mio controller devo

$scope.action = "http://www.somesite.com" 

che mi dà un errore interpolare perché ha non attendibile "http:" nella stringa. Come faccio a evitare questo. So che posso usare ng-bind-html per mettere html nella dom ma non so se riesco a farlo funzionare solo con un attributo.

Qualcun altro ha avuto questo problema. Non riesco davvero a pensare ad un modo per aggirarlo.

Grazie

risposta

4

se si utilizza Angular.js 1.2 o superiore, si ha accesso al Strict Contextual Escaping Service, $sce.

SCE assiste nella scrittura di codice in modo che (a) sia sicuro per impostazione predefinita e (b) rende molto più semplice il controllo per vulnerabilità di sicurezza quali XSS, clickjacking, ecc.

in $ sce, è possibile passare una variabile a $sce.trustAsUrl(value) per ottenere il suo valore originale. Così si dovrebbe essere in grado di utilizzare:

$scope.action = $sce.trustAsUrl("http://www.somesite.com");

+0

Grazie per la risposta. Non è stato risolto nella mia app, ma ho appena testato lo stesso concetto qui http://jsfiddle.net/7v2mz24v/ e per qualche motivo non ho bisogno di fare nulla di tutto ciò e funziona perfettamente. Non riesco a capire perché è un problema nella mia altra app. – hooligan

+0

hmm quindi visto che il codice che hai postato nella tua domanda funziona correttamente in un violino, non è un problema con il codice, più probabilmente un problema con la versione di angular.js che stai usando, o qualcos'altro nel programma che lo riguarda. più codice è necessario per valutare il problema. – Claies

+3

Gestito per farlo funzionare, non so perché funzioni nel fiddle e devo usare $ sce.trustAsResourceUrl() per passarlo all'azione del modulo. Grazie per il suggerimento sulla roba $ sce. – hooligan

11

Sono d'accordo con la risposta di hooligan. Per qualche ragione, $ sce.trustAsURL sembra non funzionare. Invece, $ sce.trustAsResourceUrl ('') ha funzionato per me.

+1

sì sembra sicuramente essere attendibileAsResourceUrl in 1.4.7 angolare – captainclam

Problemi correlati