2014-08-28 14 views
7

Próbuję ustawić formularz wyszukiwania, w którym mogę wstrzyknąć atrybut działania formularza.Akcja ustawiania kątowego w oparciu o zmienną w zakresie

W moim formularzu mam

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

Wtedy w moim kontroler mam

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

który daje mi błąd interpolować ponieważ ma niezaufane „http:” w ciągu. Jak sobie z tym poradzić. Wiem, że mogę użyć ng-bind-html do umieszczenia html w domenie, ale nie wiem, czy mogę to zrobić tylko z atrybutem.

Czy ktoś jeszcze miał ten problem. Naprawdę nie mogę wymyślić sposobu na obejście tego.

Dzięki

Odpowiedz

4

jeśli używasz angularjs 1,2 lub powyżej, masz dostęp do Strict Contextual Escaping Service, $sce.

SCE pomaga w pisaniu kodu w sposób, który (a) jest domyślnie zabezpieczone i (b) czyni inspekcję w poszukiwaniu luk bezpieczeństwa, takich jak XSS, clickjacking itp dużo łatwiejsze.

w ramach $ sce, można przekazać zmienną do $sce.trustAsUrl(value), aby uzyskać jej oryginalną wartość. Więc powinny móc korzystać:

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

+0

Dzięki za odpowiedź. Nie naprawiłem go w mojej aplikacji, ale właśnie przetestowałem tę samą koncepcję tutaj http://jsfiddle.net/7v2mz24v/ iz jakiegoś powodu nie muszę tego robić i działa dobrze. Nie rozumiem, dlaczego jest to problem w mojej drugiej aplikacji. – hooligan

+0

hmm, skoro ten kod, który napisałeś w swoim pytaniu, działa poprawnie w skrzypcach, to nie jest problem z kodem, bardziej prawdopodobny jest problem z wersją angular.js, której używasz, lub czymkolwiek innym w programie, która ma na nią wpływ. potrzeba więcej kodu, aby ocenić problem. – Claies

+3

Zarządzane, aby to działało, nie wiem, dlaczego działa na skrzypcach i muszę użyć $ sce.trustAsResourceUrl(), aby przekazać je do działania formularza. Dzięki za wskazówkę na temat $ Sce. – hooligan

11

zgadzam się z odpowiedzią na chuligan. Z jakiegoś powodu, $ sce.trustAsURL wydaje się nie działać. Zamiast tego zadziałał dla mnie program $ sce.trustAsResourceUrl ('').

+1

yep zdecydowanie wygląda na trustAsResourceUrl w kanciastym 1.4.7 – captainclam

Powiązane problemy