Angular에서 $Eval 함수 사용
Angular에서는 ng-model
을 사용하여 사용자 입력을 특정 요소에 바인딩할 수 있습니다. 그러나 표현식의 값에 액세스하려면 $eval
을 사용할 수 있습니다.
$eval
서비스는 Angular 컴파일러를 둘러싼 래퍼입니다. 전달된 표현식을 평가하기 위한 깨끗한 인터페이스를 제공합니다.
표현식을 가져와 현재 범위의 컨텍스트에서 평가합니다. 즉, 현재 범위의 모든 변수 바인딩을 표현식 내에서 사용할 수 있습니다.
이것은 바닐라 eval
과 다릅니다. $eval
서비스는 바닐라 eval
처럼 전역적으로가 아니라 현재 범위의 컨텍스트에서 표현식을 평가합니다.
$eval
을 사용하려면 특정 범위를 기준으로 평가되며 범위 밖이 아님을 알아야 합니다.
Angular에서 $eval
함수를 사용하는 단계
$eval
함수를 사용하여 애플리케이션 수명 동안 표현식을 실행할 수 있습니다. 이는 조건부로 코드를 실행하거나 한 번만 구현하는 데 유용할 수 있습니다.
-
컨텍스트와
$eval
기능을 보유할 Angular 서비스를 정의합니다. -
링크 함수 내에서 표현식이나 콜백을 평가하는 지시문을 만듭니다.
-
지시어의 컨트롤러에 삽입하고
$eval
이라는 공용 변수에 바인딩합니다. -
상태 또는 조건을 기반으로 코드를 실행하려는 모든 위치에서 템플릿에서
$eval
을 사용합니다.
$eval
의 예를 살펴보겠습니다.
자바스크립트 코드:
var app = angular.module('Adil', []);
app.controller("Demo", function($scope) {
$scope.int1 = 10;
$scope.int2 = 20;
$scope.result = $scope.$eval('int1 +int2');
});
HTML 코드:
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.1/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body >
<h2>Example of Angular $eval</h2>
<div ng-app="Adil">
<div ng-controller="Demo">
<input type="text" ng-model="int1" > + <input type="text" ng-model="int2" >
<p
>{{'Result: ' + result}}</p>
</div>
</div>
</body>
</html>
여기를 클릭 위에서 언급한 코드의 작동을 확인하십시오.
Angular에서 $eval
함수 사용의 장단점
Angular의 $eval
함수를 사용하여 런타임에 표현식을 평가할 수 있습니다. DOM 요소를 동적으로 생성하여 DOM에 추가하려는 경우 또는 액세스할 수 있는 다른 방법이 없는 개체로 작업을 수행해야 할 때 유용합니다.
그러나 $eval
함수에는 몇 가지 단점이 있습니다. 첫 번째 단점은 올바르게 사용하지 않을 경우 애플리케이션을 주입 공격에 더 취약하게 만들기 때문에 보안 취약점이 발생할 수 있다는 것입니다.
두 번째 단점은 $eval
을 사용하면 보다 일반적인 표현식에 대해 함수나 변수 대신 문자열 연결에 의존하기 때문에 코드 가독성이 떨어진다는 것입니다.
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook