3

사용자가 "&"과 같은 특수 문자를 입력하고 페이지를 제출할 때 해당 문자를 올바른 HTML로 변환하려고합니다. ex "&"=> "& amp"예제를 읽었으며 ng-bind-html$ sce을 발견했습니다.ngSanitize를 사용하여 특수 문자를 올바르게 이스케이프 처리하는 방법은 무엇입니까?

ng-bind-html은 뷰에서 제대로 변환 된 컨트롤러에서 보낸 html 텍스트 만 표시하므로 필요에 따라 쓸모없는 것 같습니다. 예 : "& amp"이 "&"으로 표시됩니다. 그래서 내가하고있는 것은 서버로 보내기 전에 컨트롤러에서 "$ sce"를 사용하여 문자를 변환하는 것입니다. 예 :

var accountName = $sce($scope.accountName); 

올바른 방법입니까? 아니면 ng-bind-html처럼 양방향 바인딩을 사용하여 위생 텍스트를 컨트롤러에 전달하는 직접적인 방법이 있습니까? 나는 각 1.2.4을 사용하고 있습니다. 볼록 sanitize.js 적절히에 입력을 분석하는 이상적인 방법에 포함 ngSanitize 모듈 아래에있는 참조 및 실시 예에 기초

답변

7

, HTML 문자열 이스케이프 $가 성분을 살균하여있다. 예 :

var myapp = angular.module('myapp',['ngSanitize']); 

$이 $의 살균을 사용하는 컨트롤러에을 살균 포함 :이 들어

var accountName = $sanitize($scope.accountName); 

, 각 응용 프로그램 모듈에서 에게 ngSanitize을 포함 할 필요가

myapp.controller('myctrl', [ "$scope", "$sanitize", function ($scope, $sanitize) { 
    // code goes here 

    var accountName = $sanitize($scope.accountName); 

    // further processing after sanitizing html input goes here 
    } 
}]); 

$ sce은 angula의 서비스입니다. r은 을 제공합니다. 엄격한 문맥 이스케이프. 각도는 특정 컨텍스트에서 사용하기에 안전한 값으로 바인딩해야합니다. 자세한 내용은 angular documentation에서 확인할 수 있습니다.